【问题标题】:In PHP, using DomDocument getElementByID not working? What am I doing wrong?在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了什么?
【发布时间】:2012-10-25 22:55:27
【问题描述】:

这是我的一些代码...

$dom = new DomDocument;
$html = $newIDs[0];
$dom->validateOnParse = true;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = true;
$tryID = $dom->getElementById('ID');
echo $tryID;

我正在尝试从网站获取多个特定 ID,这仅显示一个,并且我在任何地方都看到过这种方法,包括在此处,但是当我尝试打印某些内容时,什么也没有出现。我试着测试看看它是否正在读一些东西

if(!$tryID)
{
    ("Element not found");
}

但它也从不打印出来。最后,我用过

echo $tryID->nodeValue;

还是什么都没有……有人知道我做错了什么吗?

另外,如果我真的能做到这一点,我可以在同一个 $dom 上读取多个不同的东西到不同的变量吗?如果这有意义的话。

【问题讨论】:

  • 请记住,当您处理对象或数组时,print_r($element) 将为您提供有关对象/数组的可读信息。它是 PHP 上最好的调试工具之一。

标签: php domdocument getelementbyid nodevalue


【解决方案1】:

好的,所以你的解决方案。

对于 DIV:

<div id="divID" name="notWorking">This is not working!</div>

这样就可以了:

<?php

    $dom = new DOMDocument("1.0", "utf-8");
    $dom->loadHTMLFile('YourFile.html');
    $div = $dom->getElementById('divID');

    echo $div->textContent;

    $div->setAttribute("name", "yesItWorks");
?>

只要你传递一个 Well-Made XML 或 XHTML 内容,应该在没有文件的情况下工作,改变

$dom->loadHTMLFile('YourFile.html');

给你的

$dom->loadHTML($html);

哦,是的,当然,更改内容(为了完整性):

$div->removeChild($div->firstChild);
$newText = new DOMText('Yes this works!');
$div->appendChild($newText);

然后你就可以再次回显它或其他什么。

【讨论】:

  • 救命稻草。我对其进行了一些更改以适应我的确切情况,但这很有帮助。另外,我可能会为使用此功能的其他任何人添加...如果 HTML 文件未“正确格式化”,它将运行,但会发出一堆警告。您可以通过切换来抑制标记错误... $dom->loadHTMLFile('file.html'); ... 到 ... @$dom->loadHTMLFile('file.html');
猜你喜欢
  • 2016-05-27
  • 2019-05-26
  • 2017-04-10
  • 1970-01-01
  • 2019-05-05
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多