2014-09-03 202 views
0

我新的PHP和我對這個錯誤有點困惑,當我嘗試從文件中訪問一個DOMElement我在工作:

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

其中路徑是導致錯誤的php文件的目標。我試着調用$ dom->的getElementById($字符串)前驗證表單,但這只是導致其他錯誤一樣

'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

什麼內容' newEmptyPHP.php'? – redolent 2014-09-03 22:41:45

+0

newEmptyPHP.php的內容是什麼? – 2014-09-03 22:45:19

+0

我應該澄清; newEmptyPHP是所有這些東西都包含在同一個文件;這可能是問題,我試圖訪問尚未初始化的東西嗎? (爲澄清添加編輯) – 2014-09-03 22:55:42

回答

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()); 
// ... 
+0

輸出緩衝很方便,謝謝! – 2014-09-04 18:20:24