使用fopen()从文件列表中读取,而不是文件本身

时间:2012-01-22 01:26:10

标签: php fopen

我希望那里有人可以告诉我,如果我正在咆哮错误的树,认为下面的代码可能会稍微修改一下,这样就不会打开一个文件,而是打开一个包含在文件中的文件列表。第一档。

这是我目前的代码:

$myFile = "atextfile.txt";
$v = fopen($myFile, 'r');
$data = fgets($v);
fclose($v);
$this->variable = html_entity_decode($data, ENT_NOQUOTES, 'UTF-8');

它工作正常,但要读取多个文件,我必须将所有小文件合并为一个大文件,否则重复上面的文本,我正在尝试阅读的96个小文件。

我想要的是拥有“atextfile.txt”文件中包含的文本文件列表。另一种方法可能是它可以读取某个目录中的所有“* .txt”文件或类似的东西。然后,通过在此列表中包含或删除文件名,我将能够轻松地交换文件的顺序和/或更改我包含的文件。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

这样的事情:

$myFile = file('atextfile.txt');

foreach($myFile as $file)
{
  if(file_exists($file))
  {
     $data[] = file_get_contents($file);
  }
}

print_r($data);

答案 1 :(得分:0)

读取目录,打开所有文件,捕获所有数据,执行单个任务。 您可以将函数附加到if语句以添加添加条件,例如排除文件名。

$data = null;
if ($handle = opendir('./path/to/files')) {
   while (false !== ($entry = readdir($handle))) {
      if ($entry != "." && $entry != ".." && substr($entry,-4) == '.txt') {
         $myFile = $entry;
         $v = fopen($myFile, 'r');
         $data .= fgets($v); // concatenate
         fclose($v);
      }
   }
   closedir($handle);
}
// capture the big string
$this->variable = html_entity_decode($data, ENT_NOQUOTES, 'UTF-8');