2014-09-03 3 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, и я знаком с document.getElementById в JavaScript, поэтому я могу не понимать, как это делается в PHP, а не в JavaScript; Мне просто нужно знать, что я делаю неправильно, что приводит к возврату getElementById(). Я не мог найти ничего, что помогло бы в других вопросах, поэтому дайте мне знать, если у вас есть какое-то понимание. Спасибо!

+0

Что такое содержимое ' newEmptyPHP.php'? – redolent

+0

Что является содержимым newEmptyPHP.php? –

+0

Я должен был уточнить; newEmptyPHP - это тот же файл, в котором содержится весь этот материал; может быть, проблема, что я пытаюсь получить доступ к тому, что еще не было инициализировано? (добавлены изменения для уточнения) –

ответ

2

Прежде всего, проверка HTML5 с DOMDocument не очень хорошо работает; это, вероятно, связано с 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

Буферизация вывода удобна, спасибо! –

Смежные вопросы