运行此php脚本时:
$doc = new DOMDocument();
$doc->loadHTMLFile("some_url.html");
$ele1 = $doc->getElementById ( "coupon" );
if($ele1->length){
$doc->getElementById ( "coupon" )->item(0)->nodeValue =$result["affiliate_name"] ;}
我得到:最后一行Trying to get property of non-object
如果这不是正确的方法,我该如何设置必须提取其 ID 的标签文本。
这是我的some_url.html:
<div class="panel panel-success">
<div class="panel-heading">
<h3 id="coupon" class="panel-title">Coupon name 1</h3>
</div>
<p id="coupon_id" hidden>coupon id</p>
<div id="counter-up" class="panel-body">
0
</div>
</div>
谢谢
根据官方文档,getElementById()
返回一个 DOMElement
,它扩展了DOMNode
,而又具有您尝试更改的$nodeValue
字段。DOMNode
不是DOMNodeList
,所以它既没有$length
域,也没有item()
方法。因此,您不应该对该元素调用item()
,您可以直接操作其$nodeValue
。要找出是否存在此类元素,只需测试与NULL
相等的getElementById()
结果(或使用if ($element)
作为简写(。完整的代码如下所示:
$doc = new DOMDocument();
$doc->loadHTMLFile("some_url.html");
$ele1 = $doc->getElementById("coupon");
if ($ele1) $ele1->nodeValue = $result["affiliate_name"];
来源:
http://pl1.php.net/manual/en/domdocument.getelementbyid.php
http://pl1.php.net/manual/en/class.domelement.phphttp://pl1.php.net/manual/en/class.domnode.php