Php-scriptにhtml-pageを含む文字列変数が1つあります。この文字列からDOM要素を抽出するにはどうすればよいですか?
たとえば、この文字列では'<div class="someclass">text</div>'
、変数 'text'を取得したい。どうすればこれを行うことができますか?
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
を使用することを好みます。
DOMDocument
および DOMXPath
をご覧ください。
$DOM = new DOMDocument();
$DOM->loadHTML($str);
$xpath = new DOMXPath($DOM);
$someclass_elements = $xpath->query('//[@class = "someclass"]');
// ...