【发布时间】:2016-08-22 18:24:26
【问题描述】:
嗨,
我在名为 content 的目录中有以下文件:仅 index.php、page1.php、page2.php 和 page3.php。
然后我有这个代码:
$column = scandir("content");
foreach ($column as $value) {
$stvalue = str_replace(".php", "", $value);
echo "<div>$stvalue</div>";
}
不过,这就是我得到的:
<div>.</div>
<div>..</div>
<div>index</div>
<div>page1</div>
<div>page2</div>
<div>page3</div>
前两个元素是什么?我没有这样命名的文件,所以我不明白。
谢谢。
【问题讨论】:
-
点(.)和双点(..)是Linux目录。它们存在于每个文件夹中。点(.)引用当前目录,而双点(..)引用父目录
-
我可以弄清楚,但它们不应该出现,因为我不需要它们。我怎样才能摆脱它们?此外,我什至不在 linux 上,而是在 windows 上。
-
您可以过滤特殊目录。使用 array_diff 或使用 if 语句显式检查它们。例如,您可以使用 glob() 函数仅获取 .php 文件。这样可以避免特殊目录,但要小心,因为只会显示 .php 文件。例如。 glob("*.php");
-
你的意思是和 preg_match 一样?
-
我能想到的一些选项:glob("*.php");或 $files = array_diff(scandir("content"), array('..', '.'));或 if($value != '.' and $value != '..') { ... }
标签: scandir