我编写了以下一行来解析来自twitter个人资料的图片,并且它大部分时间都有效,只是当该页面不包含匹配时,该行会杀死它包含脚本。
我对正则表达式解析更熟悉,但我想我会尝试新的东西并学习xpath过程,但我不确定我缺少什么?我尝试过try / catch逻辑,但没有帮助。如何阻止此xpath查询停止脚本,如果找不到匹配则返回''
$img = '';
$img = @$xpath->query("//*[@class='profile-img' or @id='profile-image']" )->item( 0 )->getAttribute( 'src' );
由于
答案 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
属性。否则它将返回一个空字符串。