标准的glob()函数用法就像
$dir = glob("*.txt");
foreach ($dir as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
使用*作为通配符,但有没有办法否定它来忽略任何以下划线开头的文件,如_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";
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用glob()自己的正则表达式来避免首先加载不必要的文件,假设这会更快.
小智 12
这样就行了.
$dir = glob("[!_]*.txt");
foreach ($dir as $filename) {
echo "$filename size " . filesize($filename) . "<br />";
}
Run Code Online (Sandbox Code Playgroud)
不需要正则表达式.
$files = array_filter(glob('*.txt'), function ($filename) {
return $filename[0] != '_';
});
Run Code Online (Sandbox Code Playgroud)