2011-02-04 64 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属性。否则,它将返回一个空字符串。