2014-09-03 5 views
0

내가 PHP에 새로 온 사람과 내가에서 일하고 있어요 파일에서 DOMElement에 액세스하려고 할 때이 오류에 의해 조금 혼란 스러워요 :

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

여기서 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을 반환하고 있으므로 변경하려고하는 스팬 요소에 액세스 할 수 없다는 것을 이해합니다. 나는 전에 ASP.NET과 JavaScript로 작업 해 왔고 JavaScript에 document.getElementById을 익숙하게 알고 있으므로 JavaScript와는 반대로 PHP에서 어떻게 처리되는지 오해 할 수도 있습니다. 난 그냥 뭘 잘못하고있어 getElementById()가 null을 반환하는지 알 필요가있다. 나는 다른 질문에 도움이되는 것을 찾을 수 없었습니다. 그래서 당신이 공유 할 통찰력이 있다면 알려주십시오. 고맙습니다!

+0

을' newEmptyPHP.php'? – redolent

+0

newEmptyPHP.php의 내용은 무엇입니까? –

+0

나는 분명히해야했다; newEmptyPHP는이 모든 것들이 포함 된 동일한 파일입니다. 문제가 될 수 있습니까? 아직 초기화되지 않은 항목에 액세스하려고합니까? (설명을 위해 편집 추가됨) –

답변

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

출력 버퍼링은 편리합니다. 감사합니다! –