在 PHP 中从字符串中提取 DOM 元素

2022-08-31 00:29:09

可能的重复项:
使用php抓取html页面?
解析 HTML 的最佳方法

我的php脚本中有一个字符串变量,其中包含html页面。如何从此字符串中提取DOM元素?

例如,在这个字符串中,我希望得到变量“text”。我该怎么做?'<div class="someclass">text</div>'


答案 1

您需要使用 DOMDocument 类,更具体地说,使用其 loadHTML 方法将 HTML 字符串加载到 DOM 对象。

例如:

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

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


之后,您将能够操作 DOM,例如使用 DOMXPath 类对其执行 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)


作为替代方案,您也可以使用 simplexml_load_stringSimpleXMLElement::xpath 来代替 ,但对于复杂的操作,我通常更喜欢使用 .DOMDocumentDOMDocument


答案 2

看看 DOMDocumentDOMXPath

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

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

推荐