getElementById($ string)返回NULL

时间:2014-09-03 22:37:57

标签: php domdocument

我是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。我无法找到任何有助于其他问题的内容,所以如果您有任何见解可以告诉我。谢谢!

1 个答案:

答案 0 :(得分:2)

首先,使用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());
// ...