PHP glob () для отображения файла, который не начинается с подчеркивания?

Стандартное использование функции 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] != '_'; });