【问题标题】:Can't get value through DOMDocument and getElementById() in PHP [closed]无法通过 PHP 中的 DOMDocument 和 getElementById() 获取价值 [关闭]
【发布时间】:2013-06-29 04:04:56
【问题描述】:

这是我的 HTML 代码:

<tr>
    <td class="serviceOK">Total</td>
    <td class="serviceOK">0d 0h 0m 0s</td>
    <td id="test" class="serviceOK">0.000%</td>
    <td class="serviceOK">0.000%</td>
</tr>

这是我的 PHP 代码:

$doc = new DOMDocument();
$doc->validateOnParse = true;
@$doc->loadHTML($report); //$report is actually my HTML code.
echo $doc->saveHTML(); //echoes everything successfully.

$run = $doc->getElementById('test');
echo $run; //echoes Nothing
var_dump($run); //echoes NULL

我正在使用 PHP DOMDocument 解析我的 HTML 代码并使用 id="test" 检索该元素内的值,但它没有回显任何内容。我有什么遗漏吗?

【问题讨论】:

  • 你也可以使用jquery。
  • 试试$doc-&gt;getElementById('test')-&gt;tagName;看看
  • @sharif - jquery 与此无关。 Zim3r 正在服务器端解析它。
  • @joe 谢谢,但它返回了整个页面而不是带有测试 ID 的元素。
  • 在 PHPFiddle 上成功运行的 This Code 无法在我的网络服务器上运行。有什么想法吗?

标签: php html dom


【解决方案1】:

您的 PHP 代码是在 html 代码之后编写的吗?也许它找不到元素,因为脚本在元素形成之前正在运行

【讨论】:

  • 哦,对了。那么引号中可能存在一些问题,因此没有正确解析 HTML。
  • 是的,但我认为这里的服务器有问题。评论了 Rob 的帖子。
【解决方案2】:

$run 是一个 DOMElement 对象;你需要获取它的nodeValue:echo $run-&gt;nodeValue;

证明:http://phpfiddle.org/main/code/c5s-8pe

编辑:由于您的 var_dump 返回 null,您需要检查您的 HTML。它无法被解析,和/或 DOM 中有多个 ID 具有相同的 ID - 这不应该发生(ID 应该是唯一的

【讨论】:

  • 那么他的问题在别处。
  • +1 - 鉴于问题中的信息,很难判断出了什么问题,但很可能是重复的 ID 或类似的东西。
  • 谢谢你,我在我的网络服务器上试过你的代码,我不敢相信它给了我一个错误:Notice: Trying to get property of non-object in /var/www/html/test.php on line 16
  • 您在 PHPFiddle 链接中尝试了所有内容?你的 PHP 版本是多少?
  • 是的,没错,安装了 php-domxml-php4-php5 和 php-xml 的 PHP 5.3.3 (cli)(构建时间:2013 年 2 月 22 日 02:51:11)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
相关资源
最近更新 更多