0

ここで、domツリーを取得する方法:

$html = file_get_contents('somefile.html');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom_document = new DomXPath($dom);
$dom_object = $dom_document->query('somePathHere');

$dom_object の html 構造:

<div>
  <a href='something'>some text here</a>
  I want this
</div>

ここで私が必要なもの:

foreach($dom_object as $value){
     echo $value->getElementsByTagName('a')->item(0)->nodeValue; //working properly
     echo 'I want this' // I don't know how to get that 'I want this' text
}

精度: 複数の xpath クエリを作成する必要はありません。私は私のものに固執したいと思います... よろしくお願いします。乾杯。マルク

4

2 に答える 2

0

あなたのxmlの予想される構造はわかりませんが、これはあなたの特定のリクエストに対して機能します:

/html/body/div/text()

これにより、問題の div の直接の親を持つテキスト ノードのみが選択されます。一般的な を使用することもできますが、//div/text()通常、より具体的なクエリの方が優れています/高速です。

于 2012-05-17T16:07:50.533 に答える
0

nodeType を使用してテキスト ノードを取得します。

foreach($nodes as $node) {
    if($node -> nodeType == 3) {
        echo $node -> nodeValue . "<br />";
    }
}

説明 : php DOMDocument では、すべてのテキストがノード内にあります。あなたの場合、それはテキストノードであり、PHP の XML_NODE_CONSTANTS によると 3 を意味します

詳細:http ://www.php.net/manual/en/class.domnode.php

于 2012-05-17T14:20:30.323 に答える