我需要將XML文檔發送到SOAP Web服務(我沒有任何控制權)。我收到了一個錯誤,因爲文本包含HTML實體,所以我乾淨的文本字符串與html_entity_decode()
,然後htmlspecialchars()
之前,我的文本添加到SimpleXML的對象,像這樣:通過PHP清理XML文檔中的十六進制實體
if(!mb_detect_encoding($string, "UTF-8") == "UTF-8") {
$string = utf8_encode($string);
}
$string = htmlspecialchars(html_entity_decode($string, ENT_COMPAT, 'UTF-8'), ENT_COMPAT, 'UTF-8');
$xml->addChild('PROD_DESC', $string);
但是,儘管它清除命名實體其形式爲©
它不會對像á
這樣的十六進制實體做任何事情,我所說的服務也不接受這些實體。
In this post我發現了一個可能的解決方案,但是當我將該字符串傳遞給整潔的cleanString函數時,我得到的字符串相同,但它不會觸及這些實體。
[PHP的可能重複:使用的DomDocument每當我試着寫UTF-8寫入它的十六進制表示。 ](http://stackoverflow.com/questions/3575109/php-using-domdocument-whenever-i-try-to-write-utf-8-it-writes-the-hexadecimal-no) – Gordon 2011-01-20 15:59:31
是的,對不起,我沒有看到那個。你在那裏做了一個很好的解釋。 – AJJ 2011-01-20 16:19:40