如果你想得到:
文本
在
标签内class="text"
这本身里面
有class="main"
我会说最简单的方法是不使用DOMDocument::getElementsByTagName-它将返回所有具有特定名称的标签(虽然您只需要其中一些标签)。
相反,我会使用DOMXpath该类在您的文档上使用XPath查询。
例如,应该执行以下操作将HTML字符串加载到DOM对象中,并实例化DOMXpath该类:
$html = <<
Capture this text 1
Capture this text 2
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
然后,您可以将XPath查询与DOMXPath::query方法一起使用,该方法返回您正在搜索的元素的列表:
$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');
foreach ($tags as $tag) {
var_dump(trim($tag->nodeValue));
}
执行此操作后,我得到以下输出:
string 'Capture this text 1' (length=19)
string 'Capture this text 2' (length=19)