2016-12-25 170 views
0

我用下面的代码来解析在while循环的RSS提要:跳到下一个循环(XML解析内部while循环)

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页面)。如何强制它跳到下一个循环,以防当前循环出现这种问题?

在此先感谢您的帮助!

回答

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而不是对象。

+0

完美!谢谢分配人! – Tim