我有一个从scandir取回的数组,但它包含"."
和".."
,我不希望它这样。
我的代码:
$indir = scandir('../pages');
$fileextensions = array(".", "php", "html", "htm", "shtml");
$replaceextensions = str_replace($fileextensions, "", $indir);
我正在对文件扩展名执行字符串替换,从而导致[0]和[1]显示为空,但它们是"."
和".."
array(4) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(4) "test"
[3]=>
string(4) "home"
}
如何从阵列中删除"."
和".."
?
9条答案
按热度按时间ryoqjall1#
您可以使用array_filter。
注意这会过滤掉所有的目录,只留下文件和符号链接。如果你真的只想排除以
.
开头的文件(和目录),那么你可以这样做:gojuced72#
在scandir中删除点文件的最快方法
从PHP Manual
zd287kbt3#
array_diff
可以满足您的需求:http://php.net/manual/en/function.array-diff.php
jhdbpxl94#
我知道erknrio提供了一个答案,但这里有一个更干净的方法来获得一个没有目录的文件数组(修改后更有效):
2j4z5cfb5#
你可以使用这个代码段。它只返回目录中的文件:
jgovgodb6#
只需使用preg_replace从目录中删除所有类型隐藏文件
jmp7cifd7#
如果你需要一个干净的函数;
我认为这个函数既整洁又能很好地工作。而且,这个函数中返回的数组的键排序正确。
ercv8c1e8#
所有其他答案都是好的。我有一个干净的变通方案。
使用glob函数,该函数接受一个正则表达式,只返回匹配的文件。它似乎排除了
.
和..
目录,因此使用一个简单的应该很好用。
pieyvz9o9#