是否有任何unicode数字符号转换为实际字符的解决方案

时间:2013-04-05 12:51:38

标签: php unicode decode

我即将解决这个问题。如果有人有任何解决方案。 我有一个html字符串

$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字符。

1 个答案:

答案 0 :(得分: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);