所以我从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
答案 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不能支持闭包。