什么是mb_convert_encoding($ string,'utf-8','HTML-ENTITIES')的替代品;?

时间:2016-05-13 16:48:02

标签: php encoding

我希望更换

 mb_convert_encoding($string, 'utf-8', 'HTML-ENTITIES');

与其他东西,因为我没有安装mb模块,无法安装它。有没有什么?我尝试了utf8_decode($ string),但这不起作用。

这与列出的问题不同,因为它试图反过来。

我想用一个字符串,例如,在UTF8中使用ä并将其转换为& auml;或其HTML实体为& #num;

3 个答案:

答案 0 :(得分:0)

如果您没有mb_convert_encoding,可以尝试使用preg_replace_callback UCS-4string进行编码,然后使用bin2hex,例如:< / p>

$string = "★ PHP UTF-8 Sucks! ★";
$entity = preg_replace_callback('/[\x{80}-\x{10FFFF}]/u', function ($m) {
    $char = current($m);
    $utf = iconv('UTF-8', 'UCS-4', $char);
    return sprintf("&#x%s;", ltrim(strtoupper(bin2hex($utf)), "0"));
}, $string);
echo $entity;
&#x2605; PHP UTF-8 Sucks! &#x2605;

答案 1 :(得分:0)

您可以考虑使用MBString Polyfill library。 即使您的平台上没有安装扩展,此库也会添加MBString方法。

答案 2 :(得分:-1)

我可以通过以下方法解决我的问题:

htmlspecialchars_decode( html_entity_decode( html_entity_decode( $string, ENT_QUOTES | ENT_XML1, 'UTF-8' ) ) );