注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

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

2015-08-28 14:23:47|  分类: 微信 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
来源:http://www.tuicool.com/articles/iQjyean

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

所以我向微信公众平台按顺序发送了各个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
  评论这张
 
阅读(144)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017