我在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不支持闭包。