2013-06-29 29 views
0

簡單來說另一個XML標籤,讓我們假設你有以下的XML結構:如何獲得兩個XML標籤的內容,即使他們已經在他們裏面(PHP-XML)

<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT> 

當提取文本在帶有strip_tags()的PHP中的這個節點,我沒有得到標籤的內容。

第一步:

我想要做的,是提取,因此具有以下字符串:「好,我需要一些幫助,你可以看到」

第二步:

我也想給<CUSTOMTAG></CUSTOMTAG>轉換成別的東西,像<e></e>例如,終於有以下字符串:

"Well, I need some help as you <e>can</e> see." 

我將不勝感激只有測試和工作代碼。

在此先感謝!

親切的問候

+2

** **哈利,對,所以我們感謝您來嘗試自己的編碼和顯示你試過了什麼。這不是「訂購代碼」。 – michi

回答

0

對於第二部分,你可以使用類似的東西:「我希望只測試和工作代碼」

<?php 
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see, <CUSTOMTAG>maybe</CUSTOMTAG>.</TEXT>"; 

//1st part: 
$dom = new DOMDocument(); 
$dom->loadXML($xml); 
$xPath = new DOMXPath($dom); 
foreach ($xPath->query('//TEXT') as $textNode) { 
    echo $textNode->textContent; 
} 
// 2nd part: 
foreach ($xPath->query('//TEXT/CUSTOMTAG') as $find) { 
    $find_value = $find->nodeValue; 
    $replace = $dom->createDocumentFragment(); 
    $replace->appendXML('<e>'.$find_value.'</e>'); 
    $find->parentNode->insertBefore($replace, $find); 
    $parentnode = $find->parentNode; 
    $parentnode->removeChild($find); 
} 
$result = $dom->saveHTML(); 
echo $result; 
?> 
+0

謝謝你的回答! :-) – Harry

+0

不客氣。該代碼可能不是最好的,但它可以工作(也可用於''的多個實例) – Konservin

0

對於第一步,只需使用下面的代碼:

<?php 
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>"; 

$domDoc = new DOMDocument(); 
$domDoc->loadXML($xml); 

$domXPath = new DOMXPath($domDoc); 
$textNodes = $domXPath->query('//TEXT'); 

foreach ($textNodes as $textNode) { 
    echo $textNode->textContent; 
} 

對於第二步只是看這個答案https://stackoverflow.com/a/8164058/2000503

+0

謝謝你的回答! :-) 儘管通過使用SimpleXML可以達到相同的結果,但有可能嗎? – Harry

+0

不是我所知道的,我大部分時間都是使用PHP SimpleXML處理XML,但在這種情況下,我認爲DOMDocument更適合。 –

+0

非常感謝!你們倆都非常有幫助!乾杯! – Harry

相關問題