У меня есть имена файлов, такие как fm.txt fm_1.txt, fm_2.txt
, При запуске скрипта мне нужно получить количество всех файлов, начинающихся с fm.
$files = glob(PATH_DIR.'_*.txt');
echo count($files);
показывает мне count
из 0.
$files = glob(PATH_DIR.'*.txt');
echo count($files);
показывает мне счет 1.
На самом деле у 1 есть 3 файла fm.txt, fm_1.txt, fm_2.txt
, Я думаю, что второй фрагмент показывает только fm.txt
count, Как изменить эту строку, чтобы получить продолжение файлов с _
тоже
Вы можете использовать функцию readdir http://php.net/manual/en/function.readdir.php
$count = 0;
if ($handle = opendir(PATH_DIR)) {
while (false !== ($entry = readdir($handle))) {
if ( strpos($entry, 'fm') === 0 ){
++$count;
}
}
closedir($handle);
}
echo $count;
Вы должны указать функции glob, что вы хотите, чтобы файлы начинались с fm, поэтому попробуйте это:
glob (PATH_TO_YOUR_DIR. «fm * .txt»)
Предположим, у вас есть следующая структура в текущем каталоге:
test.php
test
├── fm_1.txt
├── fm_2.txt
└── fm.txt
test.php
<?php
$dir = __DIR__ . '/test';
$files = glob("${dir}/fm{,_[0-9]*}.txt", GLOB_BRACE);
var_dump($files);
затем php test.php
выдаст результат, подобный следующему:
array(3) {
[0]=>
string(28) "/home/ruslan/tmp/test/fm.txt"[1]=>
string(30) "/home/ruslan/tmp/test/fm_1.txt"[2]=>
string(30) "/home/ruslan/tmp/test/fm_2.txt"}
Экспресс Глоб fm{,_[0-9]*}.txt
Из-за расширения скобки расширяется до следующих шаблонов:
fm.txt
fm_[0-9]*.txt
поскольку в фигурных скобках указаны два элемента: пустое значение и _[0-9]*
,