美好的一天,
我正在努力实现以下目标: 使用DOM我试图获取页面中的所有HTML列表
我希望拥有的是:
$Result = array(
'<ul class="MyClass">
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
</ul>',
'<ul class="MySubMenu">
<li><a href="#">Sublink1</a></li>
<li><a href="#">Sublink2</a></li>
<li><a href="#">Sublink3</a></li>
</ul>'
);
我尝试这样做: 但后来我只能得到它的属性。
我想要归还的是完整的:
<ul class="MyClass">
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
</ul>
我目前得到以下内容。但我没有比这更进一步。 搜索网络只提供子信息,而不是整个元素。
///######## GET ALL IMAGES WITH XPath
$objects = $this->dom->getElementsByTagName('ul');
///######## RUN THROUGH ALL SET NODES
foreach($objects as $node){
exit(print_r($node));
I hope that someone knows how I should approach this issue.
TIAD!
At this point I am starting to think it is not really possible what I want.
我尝试使用explode来解决它。
这是我解决这个问题的方法:
///########-------------------------------------------------------------
///########-------------------------------------------------------------
///######## FUNCTION TO GET THE TAG BLOCK
///########-------------------------------------------------------------
///########-------------------------------------------------------------
private function GetTagBlock($tpl, $tag, $end = false){
///######## IF IT IS THE START TAG
if($end === true){
///######## GET THE LAST ELEMENT
$Part1 = explode('<'.$tag, $tpl, 2);
$tpl = '<'.$tag.$Part1[1].'</'.$tag.'>';
}
///######## GET THE LAST ELEMENT
else{
///######## SETUP AN EMPTY RETURN ARRAY
$Part1 = explode(strrev('</'.$tag.'>'), strrev($tpl), 2);
///######## EXECUTE A MAPPER
$Part1 = array_map('strrev', $Part1);
///######## SET THE TPL
$tpl = $Part1[1];
}
///######## IF IT CONCERNS THE START TAG
if($end === false){
///######## CALL ITSELF
$tpl = $this->GetTagBlock($Part1[1], $tag, true);
}
///########==================================================
///######## RETURN THE MODIFIED TEMPLATE
///########==================================================
return($tpl);
///########==================================================
}
答案 0 :(得分:0)
试试这个
$objects = $this->dom->getElementsByTagName('ul');
$ret=array();
foreach($objects as $node){
$ret[]=$node->ownerDocument->saveHTML($node)
}
var_dump($ret);