在php中转换Unicode撇号

时间:2014-07-12 01:22:52

标签: php unicode

所以我从PHP中的用户那里得到了一些文本,其中一个字符应该是一个撇号,但它不是作为字符撇号进入而是以%u2019形式出现。

我尝试了以下所有方面无济于事:

$b = urldecode($a);
$c = utf8_decode($a);
$d = html_entity_decode($a);
$e = rawurldecode($a);

%u2019似乎无法转回此角色。

urldecode:%u2019

utf8_decode:%u2019

html_entity_decode:%u2019

rawurldecode:%u2019

1 个答案:

答案 0 :(得分:1)

它必须是JavaScript转义字符串。如果在浏览器控制台中运行escape("’"),则可以看到相同的字符串。

使用我的PHP函数,它等同于JavaScript unescape()

$str = preg_replace_callback(
          '/%u(\d+)/',
          function($matches) {
              return mb_convert_encoding('&#'.hexdec($matches[1]).';', 'UTF-8', 'HTML-ENTITIES');
          },
          $str
       );

如果你的php比php 5.3旧,你应该将回调函数定义为普通函数,因为较旧的php不能支持闭包。