关于html:在PHP中从字符串中提取DOM元素

Extract DOM-elements from string, in PHP

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
crawling a html page using php?
Best methods to parse HTML

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

例如,在这个字符串'text'中,我希望得到变量'text'。我该怎么做?


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

例如:

1
2
3
4
5
6
7
8
9
10
11
12
$string = <<<HTML
<p>
test
</p>
text
<p>
another
</p>
HTML
;

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

之后,您将能够操作DOM,例如使用DOMXPath类对其进行xpath查询。

例如,在您的案例中,您可以使用基于这部分代码的内容:

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

在这里,您可以得到以下输出:

1
string 'text' (length=4)

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


看一下DOMDocumentDOMXPath

1
2
3
4
5
6
$DOM = new DOMDocument();
$DOM->loadHTML($str);

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