标准的glob()函数用法类似于
$dir = glob("*.txt");
foreach ($dir as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
使用*作为通配符,但是否有一种方法可以否定它以忽略以_something.txt开头的下划线的任何文件? 我试图避免使用像
这样的preg_match()$dir = glob("*.txt");
foreach ($dir as $filename) {
if (! preg_match("^_+", $filename, $match) { // doesn't show if 1st char is _
echo "$filename size " . filesize($filename) . "\n";
}
}
但使用glob()自己的正则表达式来避免首先加载不必要的文件,假设这样会更快。
答案 0 :(得分:12)
这就行了。
$dir = glob("[!_]*.txt");
foreach ($dir as $filename) {
echo "$filename size " . filesize($filename) . "<br />";
}
答案 1 :(得分:6)
不需要正则表达式。
$files = array_filter(glob('*.txt'), function ($filename) {
return $filename[0] != '_';
});