当前位置:首页 » 好文分享 » 详情

Emlog调用微语表情替换和作者昵称的实现

之前发过最新微语的调用方法,不过只是调用了微语文本内容和发布时间,以下由博主笑忘书继续给各位分享刚折腾好的调用最新微语的表情替换和发布作者昵称获取。

先给代码再说原理。以下是含有替换表情的微语调用代码:
<!-- 公告消息提示(调用最新微语) -->
<?php global $CACHE; $nt = $CACHE->readCache('newtw'); ?> 
<?php echo emoFormat($nt[0]['content']);?>(发表于<?php echo smartDate($nt[0]['date']);?>)

上面调用最新微语实现的原理是利用Emlog缓存机制,读取/content/cache/newtw.php里缓存的数据,该文件一般格式如下(三条微语,第一条和第二三条的作者不同):
<?php exit;//a:3:{

i:0;a:7:{s:2:"id";s:1:"3";
s:7:"content";s:14:"我666[开心]";
s:3:"img";s:0:"";
s:6:"author";s:1:"2";
s:4:"date";s:10:"1437894786";
s:8:"replynum";s:1:"0";
s:1:"t";s:14:"我666";}

i:1;a:7:{s
:2:"id";s:1:"2";
s:7:"content";s:33:"[呵呵][吃惊][偷笑]不错噢";
s:3:"img";s:0:"";
s:6:"author";s:1:"1";
s:4:"date";s:10:"1437890392";
s:8:"replynum";s:1:"0";
s:1:"t";s:290:"<img title="[呵呵]" src="http://xiaows.com/x/admin/editor/plugins/emoticons/images/1.gif"/><img title="[吃惊]" src="http://xiaows.com/x/admin/editor/plugins/emoticons/images/14.gif"/><img title="[偷笑]" src="http://xiaows.com/x/admin/editor/plugins/emoticons/images/25.gif"/>不错噢";
}

i:2;a:7:{
s:2:"id";s:1:"1";
s:7:"content";s:39:"使用微语记录您身边的新鲜事";
s:3:"img";s:0:"";
s:6:"author";s:1:"1";
s:4:"date";s:10:"1437797327";
s:8:"replynum";s:1:"0";
s:1:"t";s:39:"使用微语记录您身边的新鲜事";
}}

观察上面的代码(已经整理过,加上换行),我们先读取newtw缓存,如 global $CACHE; $nt = $CACHE->readCache('newtw');,接着通过$nt[0]定位到第一部分,获取其内容就是$nt[0]['content']

然后是获取发布时间,由于得到的是时间戳类型(1437894786),还需要利用Emlog核心文件function.base.php的时间转化函数,最后便是这样:smartDate($nt[0]['date'])

表情是通过将特定文本替换成对应图标而成,同样利用到了function.base.php里的emFormat(字符串)函数,即emFormat($nt[0]['content'])便可。

不过,如果注意看上面内容的话,也可以直接用$nt[0]['t']获取已经替换表情的内容,好吧,明显这样更直接了当。

我个人觉得这样添加表情挺不错的,[呵呵],单从字面上就可以判断要表达的意思。以下便是该替换表情函数,不妨看看:
/**
 * 替换表情
 *
 * @param $t
 */
function emoFormat($t){
$emos = array('[耶]'=>'0.gif', '[呵呵]'=>'1.gif', '[悲伤]'=>'2.gif', '[抓狂]'=>'3.gif', '[衰]'=>'4.gif', '[花心]'=>'5.gif', '[哼]'=>'6.gif', '[泪]'=>'7.gif', '[害羞]'=>'8.gif', '[酷]'=>'9.gif', '[晕]'=>'10.gif', '[挤眼]'=>'11.gif', '[鬼脸]'=>'12.gif', '[汗]'=>'13.gif', '[吃惊]'=>'14.gif', '[发呆]'=>'15.gif', '[闭嘴]'=>'16.gif', '[撇嘴]'=>'17.gif', '[疑问]'=>'18.gif', '[睡觉]'=>'19.gif', '[NO]'=>'20.gif', '[大哭]'=>'21.gif', '[爱你]'=>'22.gif', '[嘻嘻]'=>'23.gif', '[生病]'=>'24.gif', '[偷笑]'=>'25.gif', '[思考]'=>'26.gif', '[玫瑰]'=>'27.gif', '[心]'=>'28.gif', '[伤心]'=>'29.gif', '[咖啡]'=>'30.gif', '[音乐]'=>'31.gif', '[下雨]'=>'32.gif', '[晴天]'=>'33.gif', '[星星]'=>'34.gif', '[月亮]'=>'35.gif');
	if(!empty($t) && preg_match_all('/\[.+?\]/',$t,$matches)){
$matches = array_unique($matches[0]);
foreach ($matches as $data) {
if(isset($emos[$data]))
$t = str_replace($data,'<img title="'.$data.'" src="'.BLOG_URL.'admin/editor/plugins/emoticons/images/'.$emos[$data].'"/>',$t);
}
}
return $t;
}

再说说如何获取发布作者的昵称,其实通过上面给出的微语缓存文件可知,$nt[0]['author']可以输出作者的序号(比如第一位作者即博主是:1),这时候,我们再利用user缓存数据,得到作者昵称:
$user_cache = $CACHE->readCache('user'); echo $user_cache[$nt[0]['author']]['name'];

综上所述,最后的最新微语内容时间调用替换表情和获取作者的代码如下:
<!-- 公告消息提示(调用最新微语) -->
<?php global $CACHE; $nt = $CACHE->readCache('newtw'); ?> 
<?php echo emoFormat($nt[0]['content']);?>(<?php $user_cache = $CACHE->readCache('user'); echo $user_cache[$nt[0]['author']]['name'];?>发表于<?php echo smartDate($nt[0]['date']);?>)

折腾代码不容易,就这样。


感谢作者:笑忘书的投稿,欢迎大家投稿: https://www.blogs.hk/post-87.html

打赏
X
打赏方式:
  • 支付宝
  • 微信
  • QQ红包

打开支付宝扫一扫
日期:2015年07月27日 06:00:45 星期日   分类:好文分享   浏览(58107)   评论(12)
本文地址:https://www.blogs.hk/post-555.html   [百度已收录]
声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!

留言咨询

自动获取QQ

昵称

邮箱

网址

      Copyright © 2024 博客之家 版权所有  
      關於本站免責聲明sitemap新站登錄