在php中转换Unicode撇号


Converting Unicode apostrophe in php

我在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

必须是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不支持闭包。