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']);?>)

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


感谢作者:笑忘书的投稿,欢迎大家投稿: http://likinming.com/post-87.html

发表评论

注意:本博客开启缓存,你的评论一般2小时后才能看到,如是广告,评论将无法显示!

目前评论:12 条

  1. avatar 月饼盒厂家
    回复 2015-07-28 11:05  沙发

    看到代码就头晕了

  2. avatar wys
    回复 2015-07-28 06:19  板凳

    折腾就可能出新意。
    昨天老师谈了些关于hk及占中的问题,李兄,97以后真是发展滞后或是倒退了吗??

    • avatar 李明

      @wys:我觉得倒退了,现在香港人怨气特別多、生活压力大,已不再是以前的香港人。

  3. avatar 淘米纪
    回复 2015-07-27 20:05  地板

    挺技术的,,可以研究研究

  4. avatar IT疯狂女
    回复 2015-07-27 16:55  #4 楼

    Emlog没搞过

  5. avatar 汉克
    回复 2015-07-27 15:43  #5 楼

    很实用,谢谢分享

  6. avatar 群伟伟博客
    回复 2015-07-27 12:39  #6 楼

    不错不错,作者辛苦了,感谢分享,

    如果大家还没看够也不要紧,可以到我博客看看,

    绝对让你看个够!!![嘻嘻]

  7. avatar 蓝色悠悠
    回复 2015-07-27 11:34  #7 楼

    以前我是开启微语功能的,但后来觉得没啥大用就关闭了,先学习一下~

  8. avatar 姜辰
    回复 2015-07-27 11:09  #8 楼

    强大啊···

  9. avatar boke123导航
    回复 2015-07-27 09:52  #9 楼

    没想到Emlog也这么强大啊

  10. avatar 笑忘书
    回复 2015-07-27 06:44  #10 楼

    6时整就发了,难道李明兄用了定时发布

    • avatar 李明

      @笑忘书:全是自己发布的,谢谢投稿。