Glob () filesearch, soru

2 Cevap php

Bir küçük soru. Ben dosyaları için mükemmel çalışır bu kodu var, ama bir dizin adı üzerinde arama çalışıyorum, sonuç boş. Bunu nasıl düzeltebilirim?

<?php
function listdirs($dir,$search)
{
    static $alldirs = array();
    $dirs = glob($dir."*");
    foreach ($dirs as $d){
        if(is_file($d)){
            $filename = pathinfo($d);
            if(eregi($search,$filename['filename'])){   
                print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
            }
        }else{
            listdirs($d."/",$search);
        }
    }
}
$path = "somedir/";
$search= "test";
listdirs($path,$search);
?>

somedir / test /

result: blank (I want: /somedir / test /)

somedir / test /test.txt

Sonuç: Tamam

Ben bunu nasıl yapabilirim, dizin adlarını da aramak ister misin?

2 Cevap

Eğer bir dizin aramak istiyorsanız, if(is_file($d)) bloğu değiştirmek zorunda gidiyoruz. Şu anda, bunu bir dizin karşılaştığında basitçe tekrar listdirs çağrı yapıyoruz ... ama bu da bir bağlantı ile bir print görmek asla demektir dizin dedi.

Ben foreach yerine böyle bir şey yapıyor öneririz:

    $filename = basename($d);
    if(eregi($search,$filename)){   
        print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
    }
    if(is_dir($d)){
        listdirs($d."/",$search);
    }

Script gayet iyi çalışıyor. Ben webserver kullanıcı verilen dizin izinleri yok düşünüyorum.