在php中获取html标记之间的所有元素

时间:2017-03-06 10:28:26

标签: php html dom

我提到了question

但是,我想迭代并获取html标签之间的所有元素

这就是我做的

$homepage = file_get_contents('http://www.example.com');

将打印以下内容

<html>
<body>
<div class = "alpha">hey</div>
<div class = "beta">one</div>
<div class = "beta">two</div>
</body>
</html>

这里我需要获得类beta的所有元素。

我该怎么做?

这是我到目前为止尝试的代码

$dom = new DOMDocument();
$dom->loadHTML($homepage);
foreach($dom->getAllElements as $element ){
    if(!$element->hasClass('beta')){
       echo $element;
    } 
}

但它说DOMDocument::loadHTML(): Tag nav invalid in Entity,

1 个答案:

答案 0 :(得分:4)

试试这个

<?php

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML("<html>
<body>
<div class = 'alpha'>hey</div>
<div class = 'beta'>one</div>
<div class = 'beta'>two</div>
</body>
</html>");
libxml_clear_errors();

$classname="beta";
$finder = new DomXPath($dom);
$spaner = $finder->query("//*[contains(@class, '$classname')]");

foreach($spaner as $element ){
 print_r($element);
}

?>