function unicode_decode($name){
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $name, $matches);
if (!empty($matches)){
$name = '';
for ($j = 0; $j < count($matches[0]); $j++){
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0){
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code).chr($code2);
echo $c = iconv('UCS-2', 'UTF-8', $c);
$name .= $c;
}else{
$name .= $str;
}
}
}
return $name;
}
$name = 'Goodbaby\u597d\u5b69\u5b50\u6c7d\u8f66\u5b89\u5168\u5ea7\u6905CS808-L002\uff08\u84dd\u8272) \u5e26isofix\u63a5\u53e3 \u9002\u54080-18kg(\u7ea60-4\u5c81';
echo unicode_decode($name);
?>
变量$name中的\u字符转成中文,原话是: Goodbaby好孩子汽车安全座椅CS808-L002(蓝色) 带isofix接口 适合0-18kg(约0-4岁)
用这函数转出来的结果是:好孩子汽车安全座椅(蓝色带接口适合约岁Goodbaby好孩子汽车安全座椅CS808L002(蓝色带isofix接口适合018kg约04岁
发现没?“-”号全部不见了,更可怕的是文字顺序都乱了,我希望转换完成后,保留“-”号,和文字顺序不乱,谢谢
...
这个php的unicode_decode()自编函数还有救不?
答案:2 悬赏:20 手机版
解决时间 2021-02-10 01:12
- 提问者网友:爱了却不能说
- 2021-02-09 15:45
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-02-09 17:23
换个更快捷简短的反编译函数吧!
function unicode_decode($name){
$json = '{"str":"'.$name.'"}';
$arr = json_decode($json,true);
if(empty($arr)) return '';
return $arr['str'];
}
?>
function unicode_decode($name){
$json = '{"str":"'.$name.'"}';
$arr = json_decode($json,true);
if(empty($arr)) return '';
return $arr['str'];
}
?>
全部回答
- 1楼网友:鱼忧
- 2021-02-09 18:32
你好!
表示对正则表达式不是很了解,但是网上是用正则测试工具的。
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯