2011-08-12 1 views

答えて

2

QueryPathには、複数のアドオンメソッドを持つQPXMLという拡張子が付いています。これらのうちの1つは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; 
     } 
    } 
} 

を、それは一つの要素は持っているケースへのより良いアクセスを提供します:あなたは、すべて同じノード内のコメントの本当に洗練されたセットを持っている場合は

、あなたはこのような何かを行うことができますそれには多くのコメントがあります。

+0

感謝を!私は必要なときにQPメーリングリストの方法でこれを尋ねたばかりだったはずです。幸いにも回避策が見つかりました。 :) –

+0

QPXMLを動作させるには、 '\ QueryPath :: enable( '\ QueryPath \ Extension \ QPXML');'を実行しなければなりませんでした。 –

0

は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]); 
関連する問題