在 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