我有以下功能:
function doParse($parser_object) {
$links=file("./fullsoccer.TXT", "r");
$i=0;
while(!empty($links[$i]))
{
set_time_limit(0);
if (!($fp = fopen($links[$i], "r")));
{
//loop through data
while ($data = fread($fp, 4096)) {
//parse the fragment
xml_parse($parser_object, $data, feof($fp));
}
}
$i++;
}
}
此代码将来自fullsocce.txt的507个XML数据链接列表保存到$ links然后我使用fread读取每个文件的内容(链接:在线链接)并将$ data传递给我的main函数xml_parse到使用SAX解析器解析并保存数据。 我的问题是: 只是数组$ links的最后一个文件传递给函数并解析数据,我希望你的帮助知道它为什么只用一个文件?请这是紧急情况
答案 0 :(得分:0)
!($fp = fopen($links[$i], "r")
fopen在出错时返回FALSE,因此该检查仅在eof或invild行上为真。也许把它改成
if (($fp = fopen($links[$i], "r") != FALSE)
我还注意到了一个额外的;和)if(!($ fp = fopen($ links [$ i],“r”)));也许我只是没有正确匹配。
答案 1 :(得分:0)
您缺少fclose
,但除此之外我认为您需要进行一些调试,请尝试注释掉“xml_parse”函数并添加echo $links[$i]."<br />\n";
function doParse($parser_object) {
$links=file("./fullsoccer.TXT", "r");
$i=0;
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";
}
$i++;
}
}