Php 关于querypath的2个基本问题
如何查找节点是否不存在? 我正在使用 如果($item->branch()->兄弟($tagNames['desc'])->text()) 有更好的办法吗Php 关于querypath的2个基本问题,php,html-parsing,querypath,Php,Html Parsing,Querypath,如何查找节点是否不存在? 我正在使用 如果($item->branch()->兄弟($tagNames['desc'])->text()) 有更好的办法吗 有没有执行OR查询的方法?如果标记A存在,获取其文本(),否则获取B的文本() 我正在使用以下工具: $desc1 = ( $item->branch()->siblings($tagNames['desc'])->text() ? $item->branch()->siblings($tagNames['
$desc1 = ( $item->branch()->siblings($tagNames['desc'])->text() ?
$item->branch()->siblings($tagNames['desc']) :
$item->branch()->siblings($tagNames['descAlternative']) ) ;
这看起来不是最有效的做事方式
关于第一个问题,谢谢:
当QueryPath未找到匹配项时,其大小为0。因此,您可以:
if (count($item) > 0) {
// do whatever with $item
}
因此,对于第二个示例,您可以:
if (count($item->branch()->siblings($tagNames['desc']))) {
$item->branch()->siblings($tagNames['desc']);
$item->branch()->siblings($tagNames['descAlternative']) ) ;
}
但还有另一种方法:您也可以同时传入两个选择器
$item->branch()->siblings('desc, descAlternative')->text();
这将选择两者。但是,text()
将只返回第一个匹配项的文本。因此,它的效果是对第一个执行OR。:
当QueryPath未找到匹配项时,其大小为0。因此,您可以:
if (count($item) > 0) {
// do whatever with $item
}
因此,对于第二个示例,您可以:
if (count($item->branch()->siblings($tagNames['desc']))) {
$item->branch()->siblings($tagNames['desc']);
$item->branch()->siblings($tagNames['descAlternative']) ) ;
}
但还有另一种方法:您也可以同时传入两个选择器
$item->branch()->siblings('desc, descAlternative')->text();
这将选择两者。但是,
text()
将只返回第一个匹配项的文本。因此,它具有执行OR的效果。我越来越喜欢querypath!我越来越喜欢querypath了!