我正在使用PHP并查看DOM来解析html并在页面上找到某些信息。
我使用getElementsbyTagName()
:
foreach ($dom->getElementsByTagName('div') as $node) {
$array_data[ ] = $node->nodeValue;
}
print_r($array_data);
在页面上,我看到有很多<div>
个。
我感兴趣的div在页面上有一个唯一的id。
我想我可以选择这个特定的信息通过更新我的代码来查看id如下:
foreach ($dom->getElementById('tree___34LHOENOP7') as $node) {
$array_data[ ] = $node->nodeValue;
}
print_r($array_data);
此代码似乎不起作用。 html:
<div id="tree___34LHOENOP7" style="margin-top: 5px; font-family: Verdana, Arial, sans-serif; height: 528px; overflow: auto;">
<ul><li style="list-style-type:none;"><span style="cursor:pointer;color:#D99F00;" onclick="prtv_C_E(this,'ExpandableRegionClickHandler','',2,true);(2,this);">UK</span><img src="https://images... " title="re-centre map here" onclick="ExpandableRegionClickHandler(2,this);" style="display:inline;margin-left:7px;cursor:pointer;"><ul style="display:block;"><li style="list-style-type:none;"><span style="cursor:pointer;color:#D99F00;" onclick="prtv_C_E(this,'ExpandableRegionClickHandler','',59,true);ExpandableRegionClickHandler(59,this);">Channel Islands</span><img src="https://images... " title="re-centre map here" onclick="ExpandableRegionClickHandler(59,this);" style="display:none;margin-left:7px;cursor:pointer;"><ul style="display:none;"><li style="list-style-image:url('http://images…’);"><a class="MapEventName" href="http://www... /guernsey" onclick="EventSpanClick(1439,this);" onmouseover="EventSpanMouseOver(1439,this);" onmouseout="EventSpanMouseOut(1439,this);">Guernsey</a></li>
答案 0 :(得分:0)
文档解释得很好:
<强>的getElementById:强>
通过其ID返回对元素的引用; ID是一个字符串,可用于唯一标识在HTML id属性
中找到的元素
<强>的getElementsByTagName:强>
Element.getElementsByTagName()方法返回实时 HTMLCollection具有给定标记名称的元素。
您不需要将foreach与getElementById一起使用,因为您只获得一个元素。
答案 1 :(得分:0)
希望这会对您有帮助,DOMDocument::getElementById
将返回DOMElement Object
。
$domObject= new DOMDocument();
$domObject->loadHTML($source);//put your complete source html string here
$result=$domObject->getElementById("tree___34LHOENOP7");//this will output DOMElement Object
print_r($result->nodeValue);
答案 2 :(得分:-1)
查看名称getElementsByTagName
包含复数 元素,但getElementById
包含单数 元素
当你使用getElementsByTagName
时,你必须循环结果。
当你使用getElementById
时,没有什么可以循环的。你得到一个结果。删除循环。
$node = $dom->getElementById('tree___34LHOENOP7');
$array_data[ ] = $node->nodeValue;
print_r($array_data);