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

先给代码再说原理。以下是含有替换表情的微语调用代码:

<!-- 公告消息提示(调用最新微语) -->
<?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']);?>)

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

全文完