Glob() 文件搜索,问题

发布于 2024-09-03 09:20:04 字数 715 浏览 7 评论 0原文

有一个小问题。我有这段代码,它非常适合文件,但如果我尝试搜索目录名称,结果为空。我该如何解决这个问题?

<?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/

结果:空白(我想要:/somedir/test/)

somedir/test/test.txt

结果:好的

我也想在目录名称中搜索,我该怎么做?

a little question. I have this code, which is works perfect for files, but If am trying search on a directory name, the result is blank. How I can fix that?

<?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

result: OK

I want to search also in the directory names, how I can do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九歌凝 2024-09-10 09:20:04

如果您想搜索目录,则必须更改 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);
    }

If you want to search for a directory, you're going to have to change the if(is_file($d)) block. Right now, you're having it simply call listdirs again when it encounters a directory... but this also means you'll never see a print with a link to said directory.

I suggest doing something like this in the foreach instead:

    $filename = basename($d);
    if(eregi($search,$filename)){   
        print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
    }
    if(is_dir($d)){
        listdirs($d."/",$search);
    }
情未る 2024-09-10 09:20:04

你的脚本运行良好。我认为网络服务器用户没有给定目录的权限。

Your script is working fine. I think the webserver user does not have permissions to the given directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文