2011-08-16 8 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

素晴らしい!これはまさに私が探していたものです。 –

関連する問題