2011-08-16 4 views
1

일부 html 문자열이 있습니다 :DOM의 마지막 텍스트 노드 찾기

$ string - 사용자가 가져온 문자열입니다.

$dom = new DomDocument; 
$dom ->preserveWhiteSpace = false; 
$dom ->loadHTML('<?xml encoding="UTF-8">'.$string); 

PHP를 사용하여 DOM 트리에서 마지막 텍스트 노드를 어떻게 찾을 수 있습니까? 내가하고 싶은 것은 찾은 문자열의 끝에 여분의 문자를 추가하는 것입니다. 다음으로 이전 텍스트 노드를 새 문자열로 바꿉니다. 이 코드를 사용하여

$xml = <<< XML 
<a> 
    First Text Node 
    <b>foo</b> 
    Another Text Node 
    <c>bar</c> 
    Not the last Text Node 
    <empty/> 
</a> 
XML; 

가정

답변

1

:

$dom = new DOMDocument; 
$dom->loadXml($xml); 
$xp = new DOMXPath($dom); 
$textNodes = $xp->query('//text()'); 
$lastTextNode = $textNodes->item($textNodes->length - 1); 
$lastTextNode->nodeValue .= 'some stuff appended to the end'; 
echo $dom->saveXml(); 

출력됩니다 :이 마지막 노드를 고려 무엇을하지 않으면

<?xml version="1.0"?> 
<a> 
    First Text Node 
    <b>foo</b> 
    Another Text Node 
    <c>bar</c> 
    Not the last Text Node 
    <empty/> 
some stuff appended to the end</a> 

, 질문을 명확히하십시오.

+0

좋아요! 이것은 내가 찾고 있었던 바로 그 것이다. –