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

How to use fopen, feof, and fread to manipulate multiple files?

提问人:unique_programmer 提问时间:5/9/2013 更新时间:5/9/2013 访问量:1160

问:

我有一个文件(fullsoccer.txt),它有 500 个链接(XML 文件的在线链接),我调用这些链接,然后将每个链接传递给一个函数,该函数打开链接,然后读取内容,然后将内容传递给解析函数 (xml_parser) 以解析内容并将其保存在我的数据库中。我的问题是该函数仅解析和保存最后一个文件。我尝试调试代码并发现所有链接都正确并且正在打开,但只是最后一个正在解析,我需要您的帮助,这是我的代码有问题吗?或者 Fopen 和 Fread in My Loop 是否在完成第一个读取请求之前收到第二个打开请求? 这是我的代码:

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

请帮助我,因为我已经和它一起生活了很长时间

php xml 解析 fopen fread feof

评论


答:

-1赞 liyakat 5/9/2013 #1

如果您需要读取文本文件,可以像下面这样使用它

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

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

fclose($links);

var_dump($links);
?>

评论

0赞 unique_programmer 5/9/2013
不,问题不在文本文件中,我完美地阅读了它。我想阅读文本文件中每个链接的内容。
0赞 user1299518 5/9/2013 #2

你能试试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);

评论

0赞 unique_programmer 5/9/2013
我使用此代码,但问题仍然相同。它只是阅读了我链接中最后一个链接的内容,我快疯了
0赞 5/9/2013
您确定要从 .txt 文件中获取所有链接吗?你在循环之前验证了它?代码太简单了,无法隐藏某些内容。print_r();
0赞 unique_programmer 5/9/2013
是的,这是我第一次想到它,我确信所有链接都已提供
0赞 5/9/2013
除了检查 (0=fail) 的结果代码并用xml_parse();xml_error_string($code);