我在PHP中工作,查看DOM来解析html,并在页面上找到某些信息。
我的代码在使用getElementsbyTagName()时运行良好
foreach ($dom->getElementsByTagName('div') as $node) {
$array_data[ ] = $node->nodeValue;
}
print_r($array_data);在我正在查看的页面上,有很多<div>的。我感兴趣的div在页面上有一个唯一的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>发布于 2017-04-25 15:33:37
希望这将帮助您,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);发布于 2017-04-25 14:59:08
文件解释得很好:
getElementbyId:
通过其ID返回对元素的引用;id是一个字符串,可用于唯一标识元素,在HTML id属性中找到
getElementsByTagName:
Element.getElementsByTagName()方法返回具有给定标记名的元素的活动HTMLCollection。
您不需要在getElementById中使用foreach,因为您只得到一个元素。
发布于 2017-04-25 15:01:12
看看名称getElementsByTagName有复数元素,但是getElementById有单数元素。
当您使用getElementsByTagName时,您必须遍历结果。
当您使用getElementById时,没有什么可循环的。你只得到一个结果。移除循环。
$node = $dom->getElementById('tree___34LHOENOP7');
$array_data[ ] = $node->nodeValue;
print_r($array_data);https://stackoverflow.com/questions/43614019
复制相似问题