ugrás a tartalomhoz

PHP alkönyvtárakban keresés help

DarkRaptor · 2008. Feb. 16. (Szo), 17.21
Sziasztok!

írtam egy olyan szkriptet, ami fájlokban rákeres egy beírt kulcsszóra és a találatot kilistázza egymás alá. Működik is szépen a kód, csak az a gond, hogy ez alkönyvtárakban nem keres. Eddig jutottam:

<?

print "
<form action=".$_SERVER['PHP_SELF']." method='post'>
<input type='text' name='keresendo' value='' />
<input type='hidden' name='s' value='1' />
<input type='submit' value='Keres' />
</form>";

if($_POST["s"]=="1"){
  
$list=array();
$path = "dir1";
$dh = opendir($path);
while (($file = readdir($dh)) !== false) {
    if($file != "." && $file != "..") {
        $list[]=$file;
    }
}
closedir($dh);


  $key=$_POST["keresendo"];
  $found='';

  for ($i=0;$i<count($list);$i++) {
    $file=file($path ."/". $list[$i]);

    for ($j=0;$j<count($file);$j++)
      if (strpos($file[$j],$key)>-1) {
        $found[]=$list[$i];
        break;
      }
  }

  for ($i=0;$i<count($found);$i++)
  
print "<a href='dir1/$found[$i]'>$found[$i]</a><br />";

}
  
?>
hogyan kéne ezt átalakítani úgy, hogy alkönyvtárakban is keressen?

nyílván az utolsó sort, ahol az <a href='dir1/... van, azt is át kéne írni, csak mire?

utánaolvastam ennek több helyen is, nézegettem az m_walk_dir() és a call_user_func() függvényeket, most az is_dir() függvénnyel szenvedek, de nem akar sehogysem összejönni a dolog.

segítségeteket előre is köszönöm!
 
1

javítva

DarkRaptor · 2008. Feb. 16. (Szo), 18.51
továbbdolgoztam a kódot, most itt tartok, de még mindig nem jó:


<?php

Function listdir($start_dir='.') {

  $files = array();
  if (is_dir($start_dir)) {
    $fh = opendir($start_dir);
    while (($file = readdir($fh)) !== false) {

     if (strcmp($file, '.')==0 || strcmp($file, '..')==0) continue;
      $filepath = $start_dir . '/' . $file;
      if ( is_dir($filepath) )
        $files = array_merge($files, listdir($filepath));
      else
        array_push($files, $filepath);
    }
    closedir($fh);
  } else {
    $files = false;
  }

  return $files;

}

print "
<form action=".$_SERVER['PHP_SELF']." method='post'>
<input type='text' name='keresendo' value='' />
<input type='hidden' name='s' value='1' />
<input type='submit' value='Keres' />
</form>";

if($_POST["s"]=="1"){

 $key=$_POST["keresendo"];
  $found='';
 
  $files = listdir($start_dir);

  for ($i=0;$i<count($files);$i++) {
    $file=file($start_dir ."/". $files[$i]);

    for ($j=0;$j<count($file);$j++)
      if (strpos($file[$j],$key)>-1) {
        $found[]=$files[$i];
        break;
      }
  }

  for ($i=0;$i<count($found);$i++)
 

print_r($found);

}
?>

hol rontottam el?
2

hasonló

Drawain · 2008. Feb. 16. (Szo), 19.53
Ez talán segíthet - ha az is_file utáni részt módosítod berakhatod a fájlnév vizsgálatot és kigyűjtheted egy tömbbe a találatokat.
3

thx

DarkRaptor · 2008. Feb. 17. (V), 11.35
köszönöm a segítségedet, másképp sikerült megoldanom! :)