Ostatnio potrzebowałem skryptu, dzięki którym mógłbym znaleźć pliki z szukaną frazą w nazwie na moim serwerze, więc go sobie napisałem wraz ze "skanerem"(pokazuje wszystkie pliki w katalogu) plików/folderów w danym miejscu. Pomyślałem, że może się komuś przydać, więc postanowiłem się podzielić!
Mamy tutaj klasę SCAN, oraz w niej dwie funkcje publiczne, oraz jedną prywatną(może być używana tylko przez inne funkcje w tej samej klasie).
Funkcje:
get(SCIEZKA DO KATALOGU)
search(SCIEZKA DO KATALOGU, SZUKANA FRAZA)
Klasa (scan_class.php):
<?PHP
// Search-file class by Ersiu.
// coded at 20 march 2010
class SCAN {
private $_FILES = array(); private $_FOUNDS = array(); private $isDir = 0;
"noExtension" => "NO-EXTENSION",
"dir" => "DIRECTORY"
);
public function get($dir){
$open = scandir($dir);
foreach($open as $file){
if($file!="." && $file!=".."){
$info = $this->getFileInfo($dir,$file);
$this->_FILES[] = $info;
if($info["extension"] == $this->lang["dir"]){
$this->get($dir."/".$file);
}
}
}
return $this->_FILES;
}
public function search($dir, $phrase){
foreach($this->get($_GET["dir"]) as $file){
if (strrpos($_file, $phrase) !== false){ $this->_FOUNDS[] = $file;
}
}
return $this->_FOUNDS;
}
private function getFileInfo($dir,$file){
$extension = (count($explode)>1
)?
end($explode):$this->isDir=1; if($this->isDir == 1){
if(@scandir($dir."/".$file)) $extension = $this->lang["dir"];
else $extension = $this->lang["noExtension"];
$this->isDir = 0;
}
$name = (count($explode)>0
&& strlen($explode[0
])<=0
)?
$explode[1
]:$explode[0
]; $extension = ($name==$extension)?$this->lang["noExtension"]:$extension;
for($i=1; $i<=count($explode)-2; $i++){ $name .= $explode[$i];
}
$directory = $dir."/".$file;
"name" => $name,
"fullname" => $file,
"extension" => $extension,
"size" => $size,
"dir" => $directory
);
}
}
?>
Przykład użycia:
Szukanie plików z podaną frazą:<?PHP
require_once("scan_class.php");
echo "<TABLE BORDER=1 style='font-size:12px;'> <TR>
<TD>#</TD>
<TD>NAZWA</TD>
<TD>FORMAT</TD>
<TD>WAGA</TD>
<TD>SCIEZKA</TD>
</TR>";
$scan = new SCAN;
$i=1;
foreach($scan->search($_GET["dir"], $_GET["search"]) as $file){
<TD>{$i}</TD>
<TD>{$file["name"]}</TD>
<TD>{$file["extension"]}</TD>
<TD>{$file["size"]}MB</TD>
</TR>";
$i++;
}
?>
Użycie:
http://localhost?dir=ŚCIEZKA_DO_KATALOGU&search=
TUTAJ_SZUKANA_FRAZAA tutaj
Wykaz plików/folderów w katalogu<?PHP
require_once("scan_class.php");
echo "<TABLE BORDER=1 style='font-size:12px;'> <TR>
<TD>#</TD>
<TD>NAZWA</TD>
<TD>FORMAT</TD>
<TD>WAGA</TD>
<TD>SCIEZKA</TD>
</TR>";
$scan = new SCAN;
$i=1;
foreach($scan->get($_GET["dir"]) as $file){
<TD>{$i}</TD>
<TD>{$file["name"]}</TD>
<TD>{$file["extension"]}</TD>
<TD>{$file["size"]}MB</TD>
</TR>";
$i++;
}
?>
Użycie:
http://localhost?dir=ŚCIEZKA_DO_KATALOGU