在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了啥?

Posted

技术标签:

【中文标题】在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了啥?【英文标题】: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 上最好的调试工具之一。 【参考方案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');

以上是关于在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

来自DOMDocument的nodeValue在PHP中返回奇怪的字符

使用 DOMDocument PHP 获取 Xpath 父节点?

在 PHP 中从 DOMNode 创建 DOMDocument

在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了啥?

PHP 4 中的新 DOMDocument()

使用 php 从 html 文件中计算 li 项