2012-11-06 4 views
4
여기

... 나는 웹 사이트에서 여러 특정 ID를 얻기 위해 노력하고PHP에서 DomDocument getElementByID가 작동하지 않습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

$dom = new DomDocument; 
$html = $newIDs[0]; 
$dom->validateOnParse = true; 
$dom->loadHTML($html); 
$dom->preserveWhiteSpace = true; 
$tryID = $dom->getElementById('ID'); 
echo $tryID; 

내 코드의 비트입니다, 이것은 단지 하나를 보여 주며, 여기에 포함, 사방이 방법을 봐 왔지만, 때 나는 아무 것도 나타나지 않는 것을 시도하고 인쇄한다. 나는 그것으로 무엇인가를 읽고 있는지 테스트하려고 시도했다.

if(!$tryID) 
{ 
    ("Element not found"); 
} 

그러나 결코 그것을 출력하지 않는다. 마지막으로, 내가 사용했습니다

echo $tryID->nodeValue; 

아직 아무도 ... 내가 뭘 잘못하고 있는지 알아?

또한이 작업을 수행하면 동일한 $ dom에서 여러 변수를 여러 가지로 읽을 수 있습니까? 그게 이해가된다면.

+0

객체 또는 배열을 처리 할 때'print_r ($ element)'는 객체/배열에 대한 READABLE 정보를 제공합니다. PHP에서 얻는 최상의 디버깅 도구 중 하나입니다. –

답변

3

그래, 해결책.

<div id="divID" name="notWorking">This is not working!</div> 

이 할 것 : DIV에 대한

변경

<?php 

    $dom = new DOMDocument("1.0", "utf-8"); 
    $dom->loadHTMLFile('YourFile.html'); 
    $div = $dom->getElementById('divID'); 

    echo $div->textContent; 

    $div->setAttribute("name", "yesItWorks"); 
?> 

만큼 당신이 잘 만들어진 XML 또는 XHTML 컨텐츠를 통과 파일없이 작동,

$dom->loadHTMLFile('YourFile.html'); 

to

$dom->loadHTML($html); 

오, 그래, 물론, (완전성)의 내용을 변경하려면 :

$div->removeChild($div->firstChild); 
$newText = new DOMText('Yes this works!'); 
$div->appendChild($newText); 

그런 다음 당신은 그냥 다시 또는 뭔가를 에코 할 수 있습니다.

+0

생명의 은인. 나는 나의 정확한 상황에 맞게 조금 바꿨지 만, 이것은 많은 도움을 주었다. 또한, 나는 이것을 사용하는 다른 사람을 위해 추가 할 수 있습니다 ... HTML 파일이 "제대로 포맷 된"것이 아니라면 실행되지만 많은 경고를줍니다. 전환하여 마크 업 오류를 억제 할 수 있습니다 ... $ dom-> loadHTMLFile ('file.html'); ... to ... @ $ dom-> loadHTMLFile ('file.html'); –

관련 문제