【发布时间】:2020-06-27 12:29:38
【问题描述】:
我想用 xpatch 选择所有具有 href 属性的 <a> 标记等于包含 url 列表的数组中的值。
虽然我在 stackoverflow 上找到了很多示例,但它们都返回了这个错误:<b> Warning </b>: DOMXPath :: query (): Invalid expression in...
这是我测试但没有成功的代码:
$xpath->query("//a[@href=('facebook.com', 'google.com', 'amazon.com')]");
如果尝试使用一个值正常工作,如下所示:
$xpath->query("//a[@href=('facebook.com')]");
但如果我尝试添加多值返回提到的错误,我有一个包含大约 1000 个 URL 的数组,我想选择我的数组中存在 href 属性值的所有链接。
这是用 xpatch 加载 DOMDocument 加载的 DOM 的代码
$dom = new DOMDocument( '1.0', 'utf-8' );
$xpath = new DomXpath($dom);
我想澄清一下,执行速度对我来说很重要。 在您看来,选择所有链接然后通过带有 in_array 的 foreach 循环进行检查站外 xpatch 更快还是将条件直接插入 xpatch 更快?
【问题讨论】:
-
stackoverflow.com/questions/3025885/… 展示了如何在 1 个 XPath 表达式中执行此操作,但是对于这么多 URL,您最好检索所有 href 值,然后在循环中检查它们。
-
我已经看过您指出的页面,我的示例与有关 xpatch 2.0 的答案相同,您参考哪个示例。我想指出执行速度对我来说很重要,那么您认为单独的循环比直接使用 xpatch 的条件快还是慢?
标签: php html xml xpath domxpath