ugrás a tartalomhoz

Alkönyvtárakban keresés PHP

PredMan · 2007. Nov. 1. (Cs), 18.48
Sziasztok!

az alábbi script kilistázza a "dir1" nevű könyvtárat, majd kiírja azokat a fájlokat, amelyekben találat volt. A kérdésem az, hogyan lehetne azt megcsinálni, hogy a script ALKÖNYVTÁRAKBAN is keressen?
tehát pl.
dir1/valami.html
dir1/dir2/valami.html

A script a következő:

<?

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 />";

}

?>

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

Rekurzív

janoszen · 2007. Nov. 1. (Cs), 21.17
php.net-en ott van a commentek között a rekurzív könyvtárlistázó, abból kiindulva meg tudod csinálni.
2

is_dir

cSuwwi · 2007. Nov. 1. (Cs), 23.31
vagy ha szeretsz magadtól rájönni, beolvasáskor is_dirrel nézz rá, hogy van-e alkönyvtár, ha van, azt is nézd át.
ha nem megy annyira, akkor az említett rekurzív dirlister a php.net-ről (az opendir-nél az első post)
3

m_walk_dir

PredMan · 2007. Nov. 6. (K), 20.41
hali!

utánanéztem a dolgoknak és találtam egy megfelelő scriptet, ami az alkönyvtárakat is beolvassa, viszont nem tudom összehozni a kettőt! tudnál nekem ebben segíteni? itt a script:

<?php

clearstatcache();

$sourcepath = "dir1/";

$root = ereg_replace( "/$", "", ereg_replace( "[\\]", "/", $sourcepath ));

if( false === m_walk_dir( $root, "m_touch_file", true )) {
echo "'{$root}' is not a valid directory\n";
}

function m_walk_dir( $root, $callback, $recursive = true ) {
$dh = @opendir( $root );
if( false === $dh ) {
return false;
}
while( $file = readdir( $dh )) {
if( "." == $file || ".." == $file ){
continue;
}
call_user_func( $callback, "{$root}/{$file}" );
if( false !== $recursive && is_dir( "{$root}/{$file}" )) {
m_walk_dir( "{$root}/{$file}", $callback, $recursive );
}
}
closedir( $dh );
return true;
}

function m_touch_file( $path ) {
echo $path . "<br>";
if( !is_dir( $path )) {
touch( $path );
}
}

?>

előre is köszönöm a segítségedet!
4

here is it

cSuwwi · 2007. Nov. 7. (Sze), 06.51
<?php

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

function m_walk_dir( $root, $callback, $recursive = true ) {
$dh = @opendir( $root );
if( false === $dh ) {
return false;
}
while( $file = readdir( $dh )) {
if( "." == $file || ".." == $file ){
continue;
}
call_user_func( $callback, "{$root}/{$file}" );
if( false !== $recursive && is_dir( "{$root}/{$file}" )) {
m_walk_dir( "{$root}/{$file}", $callback, $recursive );
}
}
closedir( $dh );
return true;
}

function m_touch_file( $path ) {
	
	if (!is_dir($path)){
	$ft = explode("/", $path);
	$f = end($ft);
	if (eregi($_POST['keresendo'], $f)) { print "<a href='$path'>$f</a><br />"; }
	}

if( !is_dir( $path )) {
touch( $path );
}
}


clearstatcache();
$counter = 0;
$sourcepath = "projects/";
$root = ereg_replace( "/$", "", ereg_replace( "[\\]", "/", $sourcepath ));

if( false === m_walk_dir( $root, "m_touch_file", true )) {
echo "'{$root}' is not a valid directory\n";
}

return;
}
 

echo"<form method='post' action=''>
<input type='text' name='keresendo' value='' />
<input type='hidden' name='s' value='1' />
<input type='submit' value='Keres' />
</form>";
?> 
Kicsit át kellett rendezgetni, illetve a kiírás a ciklus közben történik, mert nem lehet belőle kivinni. Bár lehet hogy csak fáradt vagyok. Nincs mit.
5

thanx!

PredMan · 2007. Nov. 7. (Sze), 17.01
köszönöm a segítségedet! igazából az én scriptem fájlBAN keresett tartalomra, de ez is tökéletesen megfelel, mert ebből már megtudom oldani az átalakítást.

thanx!
Pred