提问人:unique_programmer 提问时间:5/9/2013 更新时间:5/9/2013 访问量:1160
如何使用 fopen、feof 和 fread 来操作多个文件?
How to use fopen, feof, and fread to manipulate multiple files?
问:
我有一个文件(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";
}
}
}
请帮助我,因为我已经和它一起生活了很长时间
答:
-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);
评论