2016-12-25 68 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