2016-12-14 5 views
1

У меня есть имена файлов fm.txt fm_1.txt, fm_2.txt. При запуске скрипта мне нужно получить количество всех файлов, начинающихся с fm.Как читать все файлы в каталоге, начиная с определенного пути в PHP

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

+0

'Я guess'. И если вы выведете '$ files', вы увидите реальную картину. –

ответ

0

Вы можете использовать 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

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

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" 
} 

Глоб expressoin fm{,_[0-9]*}.txt в связи с расширением скобка расширяется до следующих шаблонов:

  • fm.txt
  • fm_[0-9]*.txt

так как в скобках указаны два элемента: пустое значение и _[0-9]*.

0

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

Глоб (. PATH_TO_YOUR_DIR "фм * .txt")

+0

я сделал это. Он показывает только файлы без _ – Mann

+0

Странный. Я тестировал это на своей локальной настройке, и он отлично работает. – Zeeshan

+0

Вот что я делаю: у меня есть каталог/var/www/wms/public/test /, в котором у меня есть 4 файла: fm.txt, fm_1.txt, fm_2.txt, fm_3.txt – Zeeshan

Смежные вопросы