Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 设置DomeElement的nodeValue:getElementbyId返回null_Php_Html_Dom - Fatal编程技术网

Php 设置DomeElement的nodeValue:getElementbyId返回null

Php 设置DomeElement的nodeValue:getElementbyId返回null,php,html,dom,Php,Html,Dom,运行此php脚本时: $doc = new DOMDocument(); $doc->loadHTMLFile("../counter.html"); $ele2 = $doc->getElementById ( "coupon_id" ); if($ele2){ $ele2->nodeValue = $result["coupon_code"]; } $response["list"]= $doc->saveHTML(); $ele2被发现为空,因此它不会进入

运行此php脚本时:

$doc = new DOMDocument();
$doc->loadHTMLFile("../counter.html");
$ele2 = $doc->getElementById ( "coupon_id" );
if($ele2){
    $ele2->nodeValue = $result["coupon_code"];
}
$response["list"]= $doc->saveHTML();
$ele2被发现为空,因此它不会进入if条件,这是我的counter.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>

优惠券名称1

优惠券id

0

我已经确保html文件已成功加载

您的
$doc->getElementById
返回空值。你必须找出原因

使用Xpath可以实现这一点

<?php

$xml = '<div class="panel panel-success">
    <div class="panel-heading">
      <h3 id="coupon" class="panel-title">Coupon name 1</h3>
    </div>

<p id="coupon_id">coupon id</p>

    <div id="counter-up" class="panel-body">
      0
    </div>
  </div>';


//create dom object  
$doc = new DOMDocument();

//load xml string
$doc->loadHTML($xml);

$xpath = new DOMXPath($doc);

$result = $xpath->query("//*[@id='coupon_id']")->item(0);

$result->nodeValue = 'hello world';

echo $doc->saveHTML();
loadHTML($xml);
$xpath=新的DOMXPath($doc);
$result=$xpath->query(“/*[@id='优惠券\优惠券id'])->项目(0);
$result->nodeValue='helloworld';
echo$doc->saveHTML();
这里列出了两种备选解决方案,这可能对您有用

<?php

$xml = '<div class="panel panel-success">
    <div class="panel-heading">
      <h3 id="coupon" class="panel-title">Coupon name 1</h3>
    </div>

<p id="coupon_id">coupon id</p>

    <div id="counter-up" class="panel-body">
      0
    </div>
  </div>';


//create dom object  
$doc = new DOMDocument();

//load xml string
$doc->loadHTML($xml);

//create element objects
$ele2 = $doc->getElementsByTagName("p");

//process each object element
foreach($ele2 as $obj)
{
    //change thenode value
     $obj->nodeValue = 'hello';
}

//display the html
echo $doc->saveHTML();
?>
loadHTML($xml);
//创建元素对象
$ele2=$doc->getElementsByTagName(“p”);
//处理每个对象元素
foreach($ele2作为$obj)
{
//更改节点值
$obj->nodeValue='hello';
}
//显示html
echo$doc->saveHTML();
?>
使用简单的XML可以实现如下所示

<?php 

//create object from the string
$simplxml = simplexml_load_string($xml);

//overwrite the first p tag value
$simplxml->p = 'hello world';

//display the xml
echo $simplxml->asXML();

//check you object details in debug function
print_r($simplxml);
p='hello world';
//显示xml
echo$simplexml->asXML();
//在调试函数中检查对象详细信息
打印(SimpleXML);

您的代码和文件是正确的。再查一遍。可能是您的文件未加载。还有,
$result
是什么?$result包含我希望为所选节点设置的新值,我已经通过echo“$doc->saveHTML()”进行了检查;并发现文件加载没有问题我只是在我的本地wamp服务器上测试了它正在工作,但在我的主机服务器上没有!然后,您应该与服务器管理员联系。我认为问题在于你的文件权限如果你对它没有按预期工作感到惊讶,那就意味着你没有认真阅读手册中对
DOMDocument::getElementById
的描述。你认为我如何使用ID做同样的事,我没有这种情况,例如,id为couter up的div?5.3版本存在getElementById方法问题。因此,您必须在服务器中使用最新版本,或者必须使用简单的xml库,这将为您提供更多帮助。这可能有帮助,但不是答案