我正在使用以下代码在while循环中解析RSS提要:
while($row = mysqli_fetch_array($result)) {
$symbol=$row['joinsymbol'];
$xml=('http://finance.yahoo.com/rss/headline?s=' . $symbol);
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
$x=$xmlDoc->getElementsByTagName('item');
$title=$x->item(0)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$link=$x->item(0)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item(0)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
$pubDate=$x->item(0)->getElementsByTagName('pubDate')
->item(0)->childNodes->item(0)->nodeValue;
echo 'hello' . '<br>';
}
问题是,如果$符号选择错误(并且未找到XML页面),它会停止循环。如果当前循环有这样的问题,如何强制它跳到下一个循环?
提前感谢您的帮助!
答案 0 :(得分:1)
使用PHP 7.0和PHP 7.1在我的系统上测试过这个,但我不明白为什么它不适用于PHP 5.x:
$x = $xmlDoc->getElementsByTagName('item');
if ($x->length < 1) {
// We found no items, continue to the next iteration
continue;
}
// the rest of your script...
它停止循环的原因是,当返回无效的feed时,$x->item(0)->getElementsByTagName('title')
会抛出错误,因为语句$x->item(0)
将返回null
而不是对象。