2011-02-04 72 views
3

我寫了下面一行來解析來自twitter配置文件的圖像,它大部分時間工作,除了當頁面不包含匹配時該行會殺死它包含腳本。如何處理不匹配的XPath表達式結果PHP

我更熟悉正則表達式解析,但認爲我會嘗試新的東西,並學習xpath過程,但我不知道我失蹤了什麼?我試過try/catch邏輯,並沒有幫助。我怎樣才能阻止這個xpath查詢停止腳本,只要返回''如果沒有找到匹配?

$img = ''; 
$img = @$xpath->query("//*[@class='profile-img' or @id='profile-image']")->item(0)->getAttribute('src'); 

感謝

+0

您可能想嘗試不內聯結果的訪問。存儲`query()`結果,檢查它的內容,然後查看` - > item(0) - > getAttribute('src')' – Orbling 2011-02-04 16:10:43

+0

@ user603424:這不是關於XPath,而是PHP中的空對象引用。重新標記。 – 2011-02-04 17:50:19

回答

1

如果您還沒有與此@抑制錯誤會立即清除。如果query未返回結果,則調用item(0)將返回NULL。在NULL上調用getAttribute顯然會失敗。

您應該檢查長度:

$img = $xpath->query("//*[@class='profile-img' or @id='profile-image']")->item(0); 
$img = $img ? $img->getAttribute('src') : ''; 

它使用三元聲明:如果$img不爲空,它將返回src屬性。否則,它將返回一個空字符串。

相關問題