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