Bir klasördeki dosyaları ara

4 Cevap

Ben sitede bir arama kutusu var. Bir öğrenci bazı metin girerse, komut dosyası bir klasöre adı bu tür dosyalar için aramak gerekir.

Klasörü okumak ve dosyaları aramak nasıl?

4 Cevap

OS ve klasördeki dosyaların büyüklüğüne bağlı olarak, bunu birkaç farklı yolu hakkında gidebiliriz. Basit yolu topak kullanmak olacaktır ():

$safer = escapeshellarg( $_REQUEST['search'] );
$results = glob( "$dir/*$safer*" );

Bu size o dizindeki "ls * şey *" olarak aynı sonuçları vermelidir.

Aklınızda daha spesifik bir arama deseni ve dizindeki dosyaların mütevazı büyüklüğü, scandir varsa () size preg_match () kullanmak olabilecek bir dizi verecektir.

Eğer dosya çok sayıda varsa, bulun / yararlanarak / usr / bin düşünebilirsiniz, ya da / usr / bin / bulabilirsiniz. Php den kabuk infaz Bu tür sistem yükünü tabi yok. Eğer öğrenci bir sayıda, ya da bir kamu bakan arama varsa, o zaman farklı bir yaklaşım takip etmek isteyeceksiniz.

PHP Manual üzerinde glob() entry okuyun.

Sen scandir fonksiyonunu kullanabilirsiniz, o daha sonra bir dizi aramak istiyorsunuz aynı şekilde arama yapabilirsiniz sıralı liste dönebilirsiniz. Daha sonra da Levenshtein Distance Algorithm bir sağlamak için bir uygulama kullanmak mümkün olacak "mı demek istediniz?" Lütfen uygulama tarzı yanıt.

MySql? Eğer MySQL veya bir db hiç bağlandı. artı glob konumu ("c :/ windows / $safer") bir sunucuda yok.

Eğer topak ile aramak istiyorsanız, size bir çift IFS, elseif ve birinin kullanmanız gerekir.

<?php
if(isset($_GET['s']) and $_GET['s'] != '') {
    $dir = 'dir/sub-dir';
    $ext = '.htm';
    $search = $_GET['s'];
    $results = glob("$dir/*$search*$ext");
    if(count($results) != 1) {
        foreach($results as $item) {
            echo "<li><a href='$item'>$item</a></li>\r\n";    
        }
    }
    if(count($results) == 1) {
        $item = $results[0];
        echo "<li color='blue'><a href='$item'>$item - only result</a></li>\r\n";
    }
    if(count($results) == 0) {
       echo "<li>no results to display</li>\r\n";   
    }
}
else {
    ?>
    <form action=''>
    <input name='s'>
    <input type='submit'>
    </form>
    <?php
}
?>