Стандартное использование функции 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 (), чтобы избежать загрузки ненужных файлов в первую очередь , если предположить, что это будет быстрее.
Это будет сделано.
$dir = glob("[!_]*.txt"); foreach ($dir as $filename) { echo "$filename size " . filesize($filename) . "<br />"; }
Нет необходимости в регулярном выражении.
$files = array_filter(glob('*.txt'), function ($filename) { return $filename[0] != '_'; });