Glob () filesearch, вопрос - PullRequest
       10

Glob () filesearch, вопрос

0 голосов
/ 26 мая 2010

маленький вопрос. У меня есть этот код, который идеально подходит для файлов, но если я пытаюсь найти по имени каталога, результат пуст. Как я могу это исправить?

<?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 / тест /

результат: пусто (я хочу: / somedir / test /)

somedir / тест / test.txt

результат: ОК

Я хочу искать также в именах каталогов, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 26 мая 2010

Если вы хотите найти каталог, вам придется изменить блок if(is_file($d)). Прямо сейчас у вас просто вызывается listdirs снова, когда он встречает каталог ... но это также означает, что вы никогда не увидите print со ссылкой на указанный каталог.

Я предлагаю сделать что-то подобное в foreach вместо:

    $filename = basename($d);
    if(eregi($search,$filename)){   
        print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
    }
    if(is_dir($d)){
        listdirs($d."/",$search);
    }
0 голосов
/ 26 мая 2010

Ваш скрипт работает нормально. Я думаю, что пользователь веб-сервера не имеет прав доступа к данному каталогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...