Как прочитать все файлы в каталоге, начиная с определенного пути в переполнении стека

У меня есть имена файлов, такие как 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, Как изменить эту строку, чтобы получить продолжение файлов с _ тоже

1

Решение

Вы можете использовать функцию 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;
0

Другие решения

Вы должны указать функции glob, что вы хотите, чтобы файлы начинались с fm, поэтому попробуйте это:

glob (PATH_TO_YOUR_DIR. «fm * .txt»)

0

Предположим, у вас есть следующая структура в текущем каталоге:

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]*,

0
По вопросам рекламы [email protected]