如何使用fopen,feof和fread来操作多个文件?

时间:2013-05-09 06:34:58

标签: php xml-parsing fopen fread feof

我有一个文件(fullsoccer.txt),它有500个链接(XML文件的在线链接)我称这些链接,然后我将每个链接传递给一个打开链接的函数,然后读取内容,然后将内容传递给解析函数(xml_parser)来解析内容并将其保存在我的数据库中。我的问题是该函数仅解析并保存最后一个文件。我尝试调试代码并发现所有链接都是正确的并且正在打开,但只是最后一个正在被解析我需要你的帮助这是我的代码的问题?或者在完成第一次阅读请求之前,在我的循环中接收第二个打开请求并进行fopen和fread? 这是我的代码:

function doParse($parser_object) {
  $links=file("./fullsoccer.TXT");
  foreach($links as $link)
  {
      set_time_limit(0);
      //echo 'reading '.$link."\n";
      $fp = fopen($link, "r");
      if ($fp!==false)
      {
          //loop through data
          while ($data = fread($fp, 4096)) {
              //parse the fragment
              xml_parse($parser_object, $data, feof($fp));
              //echo $data;
          }
          //echo "\n";
          fclose($fp);
      } else {
          echo 'Cannot Open Link '.$link."\n";
      }
  }
}

帮助我解决这个问题,因为我已经和它一起生活了很长时间,请

2 个答案:

答案 0 :(得分:0)

如果您需要阅读文本文件,可以使用它,如下所示

<?php
$file = fopen("fullsoccer.txt", "r");
$links = array();

while (!feof($file)) {
   $links[] = fgets($file);
}

fclose($links);

var_dump($links);
?>

答案 1 :(得分:0)

你能试试file_get_contents();吗? 它更容易..

  if (($data = file_get_contents($link)) !== FALSE) {
          xml_parse($parser_object, $data/*, feof($fp)*/);
  } else {
      echo 'Cannot Open Link '.$link."\n";
  }

还可以启用error_reporting(E_ALL);ini_set("display_errors",1);以获得更多亮点..