• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信中QQ表情的解析(php)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

微信公众平台接受的消息中,标签是用'/:'开头的字符串表示的,假设要在网页上显示(比方制作微信大屏幕),就须要进行转换。

所以我向微信公众平台按顺序发送了各个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="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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP时间比较和时间差如何计算发布时间:2022-07-10
下一篇:
php通过时间戳处理时间!发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap