开发者

Is it possible to select HTML comments using QueryPath?

开发者 https://www.devze.com 2023-03-27 11:39 出处:网络
I see this is possible using开发者_如何学运维 jQuery, but how can it be done in QueryPath? Selecting HTML Comments with jQuery

I see this is possible using开发者_如何学运维 jQuery, but how can it be done in QueryPath?

Selecting HTML Comments with jQuery

If not, can anyone suggest an HTML parser that can select comments?


QueryPath comes with an extension called QPXML that has several add-on methods. One of these is comment().

To use it, simply include it in your script:

include 'QueryPath/QueryPath.php';
include 'QueryPath/Extensions/QPXML.php';

htmlqp($html, $selector)->comment();

This will retrieve the first comment attached to the presently selected node(s).

If you have a really sophisticated set of comments all within the same nodes, you can do something like this:

$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;
      }
   }
}

This is a little uglier, but it gives better access to cases where one element has a lot of comments in it.


To get ALL comments of HTML page via querypath :

    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]);
0

精彩评论

暂无评论...
验证码 换一张
取 消