运行这个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
在最后一行
如果它不是正确的方法,我怎样才能设置我必须提取其标识的标签文本。
这是我的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>
谢谢
答案 0 :(得分:1)
根据官方文档,getElementById()
会返回一个DOMElement
,其中DOMNode
会延伸$nodeValue
,而DOMNode
字段会尝试更改DOMNodeList
字段。 $length
不是item()
,因此它既没有item()
字段也没有$nodeValue
方法。因此,您不应该在该元素上调用getElementById()
,您可以直接操作其NULL
。要确定此元素是否存在,只需测试if ($element)
的结果是否与$doc = new DOMDocument();
$doc->loadHTMLFile("some_url.html");
$ele1 = $doc->getElementById("coupon");
if ($ele1) $ele1->nodeValue = $result["affiliate_name"];
相等(或使用{{1}}作为简写)。完整代码如下所示:
{{1}}
来源:
http://pl1.php.net/manual/en/domdocument.getelementbyid.php
http://pl1.php.net/manual/en/class.domelement.php
http://pl1.php.net/manual/en/class.domnode.php