首页 > 代码库 > 微信中QQ表情的解析(php)
微信中QQ表情的解析(php)
微信公众平台接受的消息中,标签是用‘/:‘开头的字符串表示的,如果要在网页上显示(比如制作微信大屏幕),就需要进行转换。
所以我向微信公众平台按顺序发送了各个QQ表情,在微信公众平台后台可以看到接受的表情会被解析成https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/0.gif 这样的图片。所以自己写一套解析函数即可。
在微信公众平台后台发现,腾讯自己干了一件错误的事情:有一些表情没有被正确解析,这些标签的特点是有括号、引号这样的字符,被转移掉了,没有转换回来,所以需要使用到htmlspecialchars_decode()函数。具体代码如下:
function qqface_convert_html($text){ return str_replace( $GLOBALS['qqface_maps'], array_map( "add_img_label", array_keys($GLOBALS['qqface_maps']) ), array_map( "array_htmlspecialchars_decode", $text ) ); } function array_htmlspecialchars_decode($v){ return htmlspecialchars_decode($v, ENT_QUOTES); } function add_img_label($v){ return '<img src=http://www.mamicode.com/"https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/'.$v.'.gif" width="24" height="24">';>array_map() 函数的第一个参数是回调函数,第二个参数需要是一个数组,遍历数组的内容,调入第一个函数,然后返回用户自定义函数作用后的数组。例如(http://www.w3school.com.cn/php/func_array_map.asp):<?php function myfunction($v) { if ($v==="Dog") { return "Fido"; } return $v; } $a=array("Horse","Dog","Cat"); print_r(array_map("myfunction",$a)); ?>$GLOBALS['qqface_maps']的内容,还请到https://github.com/auver/qqface 下载阅读
emoji表情的解析,有人已给出emoji表和配套css、sprite,直接调用即可,请参看https://github.com/iamcal/php-emoji
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。