2013-04-05 106 views
1

我將在此問題上拉我的頭髮。如果有人有任何解決方案。 我有一個HTML字符串是否有任何解決方案將unicode數字符號轉換爲實際字符

$html = '<div id="main">What is going on </div><div>&#1740;&#1729;&#1575;&#1722; 
&#1578;&#1608; &#1705;&#1608;&#1574;&#1740; &#1729</div> 
<span>Some More Text &lt;good&gt;</span>; 

這是具有HTML實體+英文字符+ Unicode字符數字符號的混合的HTML字符串。 我只想將unicode字符的數字符號轉換爲實際的unicode字符值。也有用戶格式化,我不想失去。

我想下面的輸出

$html = '<div id="main">What is going on </div><div>‘۔سلطان محمود نے گاڑی روکتے ہوئے</div> 
<span>Some More Text &lt;good&gt;</span>; 

我已經使用了

html_entity_decode($html, ENT_COMPAT, 'utf-8'); 

但這也轉換&lt;<&gt;>,我不想要的。

任何其他解決方案?

注意:我並不是要求unicode字符在我的網頁上沒有正確顯示,它們顯示的很好。因爲網頁呈現數字符號並顯示爲真正的Unicode字符。但是我也希望網頁後面的actaul unicode字符。

+0

您的預期輸出是什麼樣子? – Baba 2013-04-05 12:52:41

+0

你能提供完整的例外清單嗎? – sectus 2013-04-05 12:57:11

+0

@sectus我只想將數字符號轉換爲真正的unicode字符,其他所有字符都在例外列表中。 – Munib 2013-04-05 12:59:51

回答

1

嘗試使用帶有html_entity_decode的preg_preplace_callback作爲回調。

$decode_single_entity = function ($matches) { 
    return html_entity_decode($matches[0], ENT_COMPAT, 'utf-8'); 
}; 
$string = preg_replace_callback('/&#\d+;/', $decode_single_entity, $html); 
+0

我修正了代碼,因爲有兩個小錯誤。 – SWilk 2013-04-05 13:19:01

+0

你應該改變措辭,所以這成爲一個答案,而不是問題。 – nibra 2013-04-05 13:29:47

+0

,但不會太費時。我的意思是如果有10,000個實體,那麼10,000個函數的功能? – Munib 2013-04-05 14:36:18

相關問題