目的

  • 去除颜文字表情,变更为小熊「维尼」
  • 蛆音娘,不变更
  • 阿鲁更换为306张表情的新版「阿鲁」
  • 新增102张「哔哩」 Bilibili表情包,包含 [tv小电视] + [2233娘] + [热词系列]
  • 新增112张「微博」 表情包
  • 泡泡,不变更

一、准备资源

表情包:github.com/catyooo/owo/tree/main/biaoqing

存放路径:博客根目录/usr/themes/VOID/assets/libs/owo/biaoqing

二、修改文件

OwO_02.json

博客根目录/usr/themes/VOID/assets/libs/owo/biaoqing/OwO_02.json修改为 OwO_02.json


修改后的OwO_02.json文件

{
  "维尼": { ...
  "蛆音娘": { ...
  "阿鲁": { ...
  "哔哩": { ...
  "微博": { ...
  "泡泡": { ...
}

Contents.php

博客根目录/usr/themes/VOID/libs/Contents.php中找到解析表情方法parseBiaoQing,在原有的parseQuyinBiaoqingCallback下添加四个函数,并分别新增四个函数的表情回调方法。


修改Contents.php文件

/**
 * 解析表情
 * 
 * @return string
 */
static public function parseBiaoQing($content)
{
  $content = preg_replace_callback('/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血)\s*\)/is',
      array('Contents', 'parsePaopaoBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is',
      array('Contents', 'parseAruBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\&\(\s*(.*?)\s*\)/is',
      array('Contents', 'parseQuyinBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\#\(\s*(.*?)\s*\)/is',
      array('Contents', 'parseAruNewBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\$\(\s*(.*?)\s*\)/is',
      array('Contents', 'parseBilibiliBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\^\(\s*(.*?)\s*\)/is',
      array('Contents', 'parseWeiboBiaoqingCallback'), $content);
  $content = preg_replace_callback('/\:\!\(\s*(.*?)\s*\)/is',
      array('Contents', 'parseWinnieBiaoqingCallback'), $content);

  return $content;
}
/**
 * 新版阿鲁表情回调函数
 * 
 * @return string
 */
private static function parseAruNewBiaoqingCallback($match)
{
    return '<img class="biaoqing" src="/usr/themes/VOID/assets/libs/owo/biaoqing/arunew/'. str_replace('%', '', urlencode($match[1])) . '.png">';
}

/**
 * Bilibili表情回调函数
 * 
 * @return string
 */
private static function parseBilibiliBiaoqingCallback($match)
{
    return '<img class="biaoqing" src="/usr/themes/VOID/assets/libs/owo/biaoqing/bilibili/'. str_replace('%', '', urlencode($match[1])) . '.png">';
}
    
/**
 * Weibo表情回调函数
 * 
 * @return string
 */
private static function parseWeiboBiaoqingCallback($match)
{
    return '<img class="biaoqing" src="/usr/themes/VOID/assets/libs/owo/biaoqing/weibo/'. str_replace('%', '', urlencode($match[1])) . '.png">';
}
    
/**
 * 维尼表情回调函数
 * 
 * @return string
 */
private static function parseWinnieBiaoqingCallback($match)
{
    return '<img class="biaoqing" src="/usr/themes/VOID/assets/libs/owo/biaoqing/winnie/'. str_replace('%', '', urlencode($match[1])) . '.png">';
}

可完善项

如果想在点击表情后在评论输入框内展示类似:@(么么哒)能直接体现表情含义的中文名字,可使用UrlEncode编码进行转换,并去掉%E4%B9%88%E4%B9%88%E5%93%92转换后的%,最终生成文件名E4B988E4B988E59392.png

同时,json里的"data","text"需改为中文名。

完成

到这里,自定义表情包就增加完成了!

感谢@kaygb对我的指点。