我在public_html/site.com/pdf
中有一些PDF文件,但我的索引文件位于public_html/site.com/
我想使用glob()
函数迭代位于pdf/
文件夹中的所有pdf文件。问题是我没有得到任何结果。
这是我尝试过的。
# public_html/index.php
<?php
foreach (glob("pdf/*.pdf") as $filename) {
echo "$filename <br/>";
}
?>
答案 0 :(得分:3)
或者,如果要以递归方式搜索公用文件夹,可以使用RecursiveDirectoryIterator
来实现此目的:请考虑以下示例:
假设你有这个目录结构:
/var/
/www/
/test/
/images/
image.png
/files/
/files2/
pdf.pdf <-- searching for some pdf files, happens to be here
<?php
$filetype_to_search = 'pdf';
$root_path = '/var/www/test'; // your doc root (or maybe C:/xampp/htdocs/) :p
foreach ($iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($root_path,
RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST) as $value) {
if($value->getExtension() == $filetype_to_search) {
echo $value->getPathname() . "<br/>";
}
}
// ouput should be /var/www/test/images/files/files2/pdf.pdf
?>
答案 1 :(得分:2)
我的建议?只需将您的完整路径设置为变量&amp;在这样的情况下使用它。
通常,您实际上不能相信用于使路径可靠的自动方法由于各种原因。这就是我决定明确设置基本路径as I explain here的原因。我假设您使用的是/var/www/
作为根的标准Linux设置。所以在你的情况下你会设置:
$BASE_PATH = '/var/www/public_html/site.com/';
然后你的最终代码将是这样的:
$BASE_PATH = '/var/www/public_html/site.com/'
foreach (glob($BASE_PATH . "pdf/*.pdf") as $filename) {
echo "$filename <br/>";
}