如何在PHP中处理不匹配的XPath表达式结果

时间:2011-02-04 16:06:30

标签: php xpath

我编写了以下一行来解析来自twitter个人资料的图片,并且它大部分时间都有效,只是当该页面不包含匹配时,该行会杀死它包含脚本。

我对正则表达式解析更熟悉,但我想我会尝试新的东西并学习xpath过程,但我不确定我缺少什么?我尝试过try / catch逻辑,但没有帮助。如何阻止此xpath查询停止脚本,如果找不到匹配则返回''

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

由于

1 个答案:

答案 0 :(得分:1)

如果您没有使用@抑制错误,则会立即清除。如果query未返回任何结果,则调用item(0)将返回NULL。在getAttribute上拨打NULL显然会失败。

你应该查看长度:

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

这使用三元语句:如果$img不为null,则返回src属性。否则它将返回一个空字符串。