1

マークアップを含むxHTMLページの一部を抽出する必要がある状況があります。

この場合の正規表現は、子divの正確な数が保証されていないため、正しいルートではありません。

<div id="myDiv">
    <div><p>This is some content</p></div>
    <div><p>This additional content</p></div>
</div>

したがって、上記のスニペットで<div><p>This is some content</p></div>は、マークアップを含むを抽出する必要があります。

xPathの使用について検討しましたが、これを実行する方法のようですが、ノードの値だけでなく、関連するすべてのマークアップを返す方法もわかりません。

4

1 に答える 1

1

あなたは正しいです。これは、次のようにDOMDocumentXPathを介して実現できます。

$doc = new DOMDocument();
$doc->loadHTML( $html); // Load the HTML snippet

$xpath = new DOMXPath( $doc);
$node = $xpath->query( '//div[@id="myDiv"]/div')->item(0); // Get the <div>

$saved_node = $doc->saveHTML( $node); // Export that node

outputに、マークアップを含む目的の文字列が表示されます。

string(62) "<div><p>This is some content</p></div>" 

ページのソースを表示せずにhtmlentities()が表示されるように、出力を実行する必要があったことに注意してください。<div>

于 2012-07-16T17:12:35.673 に答える