php无法获取post输入法表情 消失
经验与学习 2015/9/1 15:55:18 点击:不统计
在手机处理web项目中,在输入了默认的安卓(苹果)输入法默认的表情后,发现第一个表情后面的文字小时了,查找了一下原因 原来是在现在的手机系统中新增加了 emoji表情文字 有不同的编码形式。
Emoji定义表情 http://code.iamcal.com/php/emoji/
github 替换 emoji定义的表情 https://github.com/iamcal/php-emoji
还有个找到了的解决方案是替换为空。
http://www.oicqzone.com/qqjiqiao/2014123020664.html
//我复制上面的替换内容如下
使用的正则粗暴简单,选择了 ue000 – uefff 之间的字符视为emoji,暂时没有发现误伤
$str = preg_replace("#(\\\ue[0-9a-f]{3})#ie","addslashes('\\1')",$str);
整个过程完整代码如下:
$postdata = "测试 hello 123"; //可以为收到的微信消息,可能包含二进制emoji表情字符串
$tmpStr = json_encode($postdata ); //暴露出unicode
$tmpStr = preg_replace("#(\\\ue[0-9a-f]{3})#ie","addslashes('\\1')",$tmpStr); //将emoji的unicode留下,其他不动
$postdata = json_decode($tmpStr);
echo $text;//测试 \ue415 hello 123
转www.载for网站制作学习asp必.cn究