【问题标题】:2 fundamental questions about querypath关于查询路径的 2 个基本问题
【发布时间】:2012-05-21 06:42:40
【问题描述】:
  1. 如何查找节点是否不存在? 我正在使用

    if ($item->branch()->siblings($tagNames['desc'])->text())

有没有更好的办法?

  1. 有没有办法执行 OR 查询?如果标签 A 存在则获取它的 text(),否则获取 B 的 text()?

我正在使用以下内容:

 $desc1 = (  $item->branch()->siblings($tagNames['desc'])->text()  ?
$item->branch()->siblings($tagNames['desc'])   :
$item->branch()->siblings($tagNames['descAlternative']) ) ;

这看起来不是最有效的做事方式。

谢谢

【问题讨论】:

    标签: php html-parsing querypath


    【解决方案1】:

    关于第一个:

    当 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!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2023-03-17
    相关资源
    最近更新 更多