首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP () getElementById()

PHP () getElementById()
EN

Stack Overflow用户
提问于 2017-04-25 14:48:52
回答 3查看 2.3K关注 0票数 1

我在PHP中工作,查看DOM来解析html,并在页面上找到某些信息。

我的代码在使用getElementsbyTagName()时运行良好

代码语言:javascript
复制
foreach ($dom->getElementsByTagName('div') as $node) {
          $array_data[ ] = $node->nodeValue;
        }

print_r($array_data);

在我正在查看的页面上,有很多<div>的。我感兴趣的div在页面上有一个唯一的id。我想我可以通过更新代码来选择这个特定的信息,如下所示:

代码语言:javascript
复制
foreach ($dom->getElementById('tree___34LHOENOP7') as $node) {
          $array_data[ ] = $node->nodeValue;
        }

print_r($array_data);

此代码似乎不起作用。html:

代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-25 15:33:37

希望这将帮助您,DOMDocument::getElementById将返回DOMElement Object

代码语言:javascript
复制
$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);
票数 1
EN

Stack Overflow用户

发布于 2017-04-25 14:59:08

文件解释得很好:

getElementbyId:

通过其ID返回对元素的引用;id是一个字符串,可用于唯一标识元素,在HTML id属性中找到

getElementsByTagName:

Element.getElementsByTagName()方法返回具有给定标记名的元素的活动HTMLCollection。

您不需要在getElementById中使用foreach,因为您只得到一个元素。

票数 0
EN

Stack Overflow用户

发布于 2017-04-25 15:01:12

看看名称getElementsByTagName复数元素,但是getElementById单数元素。

当您使用getElementsByTagName时,您必须遍历结果。

当您使用getElementById时,没有什么可循环的。你只得到一个结果。移除循环。

代码语言:javascript
复制
$node = $dom->getElementById('tree___34LHOENOP7');
$array_data[ ] = $node->nodeValue;
print_r($array_data);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43614019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档