Loading:

Postanowienia noworoczne - a Ty czego nauczysz się w nowym roku? [-25%]

Wykaz plików/folderów w katalogu + Szukanie plików z daną frazą

Witam, ostatnio potrzebowałem wyświetlić zawartość katalogów oraz wyszukać w katalogach plików/folderów z podaną frazą, nie mogłem znaleźć "porządnego", więc napisałem własny.

Świadomie nie użyłem wielu funkcji, które by skróciły skrypt, ponieważ nie działają one prawidłowo... np. plik bez rozszerzenia uznają za katalog itd. 

 



Napisz Artykuł

Listing

<?PHP
// Search-file class by Ersiu.
// coded at 20 march 2010

        class SCAN {
                private $_FILES = array();
                private $_FOUNDS = array();
                private $isDir = 0;
                private $lang = array(
                        "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){
                                $_file = strtolower($file["fullname"]);
                                $phrase = strtolower($phrase);
                                if (strrpos($_file, $phrase) !== false){
                                        $this->_FOUNDS[] = $file;
                                }
                        }
                        return $this->_FOUNDS;
                }
               
                private function getFileInfo($dir,$file){
                        $explode = explode(".", $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;
                        $size = round((filesize($directory)/1024)/1024,2);
                        return array(
                                "name" => $name,
                                "fullname" => $file,
                                "extension" => $extension,
                                "size" => $size,
                                "dir" => $directory
                        );
                }
               
        }
?>




Przykład:

<?PHP
        require_once("scan_class.php");
        $f = "g";
        if(@isset($_GET["search"])) $f = "s";
        if(!isset($_GET["dir"])) die("Nie podano zmiennej \$dir");
        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;
        $func = ($f == "g")?$scan->get($_GET["dir"]):$scan->search($_GET["dir"], $_GET["search"]);
        foreach($func as $file){
                echo "<TR>
                        <TD>{$i}</TD>
                        <TD>{$file["
name"]}</TD>
                        <TD>{$file["
extension"]}</TD>
                        <TD>{$file["
size"]}MB</TD>
                        <TD>{$file["
dir"]}</TD>
                </TR>"
;
                $i++;
        }
        echo "</TABLE>";
?>


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=5838

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: ersiacki Ranga: Poziom 3 Punktów: 51
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors