getElementById($string) returns NULL


getElementById($string) returns NULL

我是php的新手,当我试图从我正在工作的文件访问DOMElement时,这个错误让我有点困惑:

'Creating default object from empty value in [path]'

其中path是导致错误的php文件的目标。在调用$dom->getElementById($string)之前,我尝试过验证表单,但这只会导致其他错误,如

'No declaration for element span in [path]'

newEmptyPHP.php内容:

<!DOCTYPE html>
<html>
    <body>
        <span id="mySpan">Hello, World!</span>
    </body>
</html>
<?php
    $dom = new DOMDocument();
    $dom->load('newEmptyPHP.php');
    $dom->validate();
    $label = $dom->getElementById('mySpan');
    $label->nodeValue = "Hello, pluto!";
?>

澄清一下:我知道$dom->getElementById($id)正在返回null,因此我无法访问我试图更改的span元素。我以前使用过ASP.NET和JavaScript,而且我熟悉JavaScript中的document.getElementById,所以我可能误解了如何使用PHP而不是JavaScript来完成任务;我只需要知道我做错了什么,导致getElementById()返回null。我在其他问题上找不到任何帮助,所以如果你有任何见解可以分享,请告诉我。非常感谢。

首先,使用DOMDocument验证HTML5的效果不太好;这可能与libxml有关。

其次,加载脚本所在的同一个文件将无法按预期工作,除非您将HTML分离到自己的文件中并使用->loadHTMLFile()或使用输出缓冲:

<?php
ob_start();
?>
<html><body><span id="mySpan">Hello, world!</span></body></html>
<?php
$dom = new DOMDocument;
$dom->loadHTML(ob_get_clean());
// ...