【问题标题】:Glob not giving me any resultsGlob 没有给我任何结果
【发布时间】:2011-08-09 14:34:49
【问题描述】:

我正在尝试使用 PHP 的 Glob 来获取基于通配符的文件列表,即扩展名。

$images = glob('/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

我知道这个目录中有一个文件,即:23.png,但它没有显示在数组 $images 中。我不知道为什么不。我尝试使 URL 更加绝对(或明确),例如:

$images = glob('http://www.website.com/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

没有结果。

会不会是 Glob 没有在 PHP 中正确安装?或者还有其他原因没有给出任何结果?

【问题讨论】:

  • 该服务器上是否有绝对路径/content/big?请注意,您的路径是指服务器根目录,而不是文档根目录。如手册页的注释部分所述,网址在 glob 中不起作用。
  • 如下所述,我确实遵循了那条路,但毕竟迷路了。

标签: php


【解决方案1】:

glob 仅适用于服务器文件系统上的路径,而不适用于 URL。

http://www.website.com/content/big/ 可能真的是服务器上的/var/www/site/content/big,这就是你需要使用的路径。

使用/ 盯着路径会使glob 在您的根目录中查找该文件夹,我假设您的服务器上没有名为/content/big/ 的文件夹。

这样尝试(使用来自服务器根目录的相对路径):

$images = glob('content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

或者使用绝对路径:

$images = glob('/var/www/site/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

【讨论】:

  • 感谢您的清晰解释,这应该是解决方案,并且在世界上都有意义。 (因此将您的答案标记为答案。虽然我已经尝试过了)但在我的情况下它似乎不是解决方案,仍然没有结果 $images。 “我的” Glob 函数会不会有问题???我要再四处寻找,希望找出我(或其他东西)搞砸的地方。
  • @tvgemert:很高兴我能帮上忙。我会说仔细检查你的文件夹,确保文件确实在那里。另外,请尝试提供glob 其他文件夹以确保它确实为您提供结果。祝你好运:-)
【解决方案2】:

下面是我的实现,单引号不适用于回声,但这对我有用。希望对您有所帮助!

            <ul>
                    <?php
                            foreach(glob('audio/*.mp3') as $audio){ echo "<li><a>$audio</a></li>";}
                    ?>
            </ul>

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 2016-04-24
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多