在PHP中,使用DomDocument getElementByID无法正常工作吗?我究竟做错了什么?

Mic*_*udt 5 php getelementbyid domdocument nodevalue

这是我的一些代码...

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

我试图从一个网站上获取多个特定的ID,这仅显示一个,而且我在各处(包括在此处)都已经看到了这种方法,但是当我尝试打印出任何内容时,却没有任何显示。我尝试测试以查看它是否正在读取某些内容

if(!$tryID)
{
    ("Element not found");
}
Run Code Online (Sandbox Code Playgroud)

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

echo $tryID->nodeValue;
Run Code Online (Sandbox Code Playgroud)

还是一无所有...有人知道我在做什么错吗?

另外,如果我确实可以正常工作,我可以在同一$ dom上以多种不同的方式读取不同的变量吗?如果这是有道理的。

Fer*_*iro 4

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

对于 DIV:

<div id="divID" name="notWorking">This is not working!</div>
Run Code Online (Sandbox Code Playgroud)

这会做:

<?php

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

    echo $div->textContent;

    $div->setAttribute("name", "yesItWorks");
?>
Run Code Online (Sandbox Code Playgroud)

只要您传递精心制作的 XML 或 XHTML 内容,就应该在没有文件的情况下工作,改变

$dom->loadHTMLFile('YourFile.html');
Run Code Online (Sandbox Code Playgroud)

给你的

$dom->loadHTML($html);
Run Code Online (Sandbox Code Playgroud)

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

$div->removeChild($div->firstChild);
$newText = new DOMText('Yes this works!');
$div->appendChild($newText);
Run Code Online (Sandbox Code Playgroud)

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