2013-08-07 38 views
1

如何讓SimpleXML在PHP中用它們各自的字符替換HTML/XML實體?帶解碼實體的SimpleXML

假設有這個XML文檔中的字符串:

$data = '<?xml version="1.0" encoding="ISO-8859-1"?><example>Tom &amp; Jerry</example>' 

很明顯,我想SimpleXML來&amp;解碼爲&。它不會默認。我曾嘗試這兩種方式,無論是其中的工作:

$xml = new SimpleXMLElement($data); 
$xml = new SimpleXMLElement($data, LIBXML_NOENT); 

什麼得到XML實體解碼的最佳途徑?我想XML解析器應該這樣做,我想避免在解析之前運行html_entity_decode(實際上,它也不會工作)。這可能是字符串編碼的問題嗎?如果是這樣,我怎麼能跟蹤和修復它?

+1

你說的解碼是什麼意思?當您回顯或打印$ xml時,輸出顯示'&'符號。 –

回答

0

我不知道這是怎麼回事在某些情況下工作,但也許......

$xml = new SimpleXMLElement(html_entity_decode($data)); 

http://www.php.net/manual/en/function.html-entity-decode.php

+0

好吧,它不會。 –

+0

我只是重讀你的文章...你有沒有聲明,你想避免在我回答之前運行html_entity_decode。如果是這樣,我的道歉。也許你可以做一些像.....新的SimpleXMLElement(str_replace(「&」,「&」,$ data))? – hendr1x

+0

另外我的假設是,如果SimpleXMLElement正確解析數據,那麼這不是XML語法的問題......這是如何將數據輸入XML文檔。你需要在它進入之前修復它,或者當它出來時...... – hendr1x