我看到使用 jQuery 可以做到这一点,但是如何在 QueryPath 中完成呢?
如果没有,任何人都可以建议一个可以选择评论的 HTML 解析器吗?
QueryPath 带有一个名为的扩展QPXML
,它有几个附加方法。其中之一是comment()
。
要使用它,只需将其包含在您的脚本中:
include 'QueryPath/QueryPath.php';
include 'QueryPath/Extensions/QPXML.php';
htmlqp($html, $selector)->comment();
这将检索附加到当前选定节点的第一个评论。
如果您在同一个节点中有一组非常复杂的注释,您可以执行以下操作:
$nodes = $qp->get();
foreach ($nodes as $node) {
foreach ($node->childNodes as $child) {
if ($child->nodeType == XML_COMMENT_NODE) {
// $child is a comment.
print $child->textContent;
}
}
}
这有点难看,但它可以更好地访问一个元素中有很多评论的情况。
通过 querypath 获取 HTML 页面的所有评论:
function getAllComments($node) {
if ($node->hasChildNodes()) {
foreach ($node->childNodes as $child) {
$this->getAllComments($child);
if ($child->nodeType == XML_COMMENT_NODE) {
echo $child->textContent;
}
}
}
}
$html = $qp->get() ;
getAllComments($html[0]);