如何读取以PHP中的特定路径开头的目录中的所有文件

时间:2016-12-14 07:03:44

标签: php file glob file-read

我有像fm.txt fm_1.txt, fm_2.txt这样的文件名。运行脚本时,我需要获取以fm开头的所有文件的计数。

$files = glob(PATH_DIR.'_*.txt');
echo count($files);

显示我{0}的count

$files = glob(PATH_DIR.'*.txt');
echo count($files);

显示我的数量为1。

实际上1有3个文件假设fm.txt, fm_1.txt, fm_2.txt。我想第二个代码段仅显示fm.txt个计数,如何修改该行以获取_的文件的连续数

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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"
}

由于大括号扩展而导致的glob expressoin fm{,_[0-9]*}.txt扩展为以下模式:

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

因为大括号中列出了两个项目:空值和_[0-9]*

答案 2 :(得分:0)

你需要告诉glob函数你想要以fm开头的文件,所以试试这个:

glob(PATH_TO_YOUR_DIR。&#34; fm * .txt&#34;)