web-dev-qa-db-ja.com

PHP)で、文字列からDOM要素を抽出します

重複の可能性:
phpを使用してhtmlページをクロールしますか?
HTMLを解析するための最良の方法

Php-scriptにhtml-pageを含む文字列変数が1つあります。この文字列からDOM要素を抽出するにはどうすればよいですか?

たとえば、この文字列では'<div class="someclass">text</div>'、変数 'text'を取得したい。どうすればこれを行うことができますか?

14
user635443

DOMDocument クラスを使用する必要があります。具体的には、その loadHTML メソッド。HTML文字列をDOMオブジェクトにロードします。

例えば ​​:

$string = <<<HTML
<p>test</p>
<div class="someclass">text</div>
<p>another</p>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($string);


その後、たとえば DOMXPath クラスを使用してDOMを操作し、XPathクエリを実行できるようになります。

たとえば、あなたの場合、コードのこの部分に基づいて何かを使用できます。

$xpath = new DOMXpath($dom);
$result = $xpath->query('//div[@class="someclass"]');
if ($result->length > 0) {
    var_dump($result->item(0)->nodeValue);
}

ここでは、次の出力が得られます。

string 'text' (length=4)


代わりに、DOMDocumentの代わりに、 simplexml_load_string および -を使用することもできます。 SimpleXMLElement::xpath -しかし、複雑な操作の場合、私は一般的にDOMDocumentを使用することを好みます。

27
Pascal MARTIN

DOMDocument および DOMXPath をご覧ください。

$DOM = new DOMDocument();
$DOM->loadHTML($str);

$xpath = new DOMXPath($DOM);
$someclass_elements = $xpath->query('//[@class = "someclass"]');
// ...
4
Tim Cooper