私人论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1807|回复: 4

支持emoji么

[复制链接]

156

主题

303

帖子

1664

积分

新手上路

Rank: 1

积分
1664
发表于 2018-6-1 17:23:46 来自手机 | 显示全部楼层 |阅读模式
看看支持emoji么
回复

使用道具 举报

156

主题

303

帖子

1664

积分

新手上路

Rank: 1

积分
1664
 楼主| 发表于 2018-6-1 17:33:05 来自手机 | 显示全部楼层
🇨🇳👍😂
回复

使用道具 举报

156

主题

303

帖子

1664

积分

新手上路

Rank: 1

积分
1664
 楼主| 发表于 2018-6-1 17:34:00 | 显示全部楼层
1👍🇨🇳❤😂好
回复

使用道具 举报

156

主题

303

帖子

1664

积分

新手上路

Rank: 1

积分
1664
 楼主| 发表于 2018-6-1 17:39:30 | 显示全部楼层
修改 \source\class\discuz\discuz_database.php
增加:

public static function utf8mb4($m = ''){
        $m = preg_split('/(?<!^)(?!$)/u', $m);
        foreach ($m as $k => $z) {
                if(strlen($z)>3){
                        $z = unpack('H*', mb_convert_encoding($z,'UTF-32','UTF-8'));
                        $m[$k] = '&#x' . preg_replace('/^0*/','',$z[1]) . ';';
                }
        }
        return implode('',$m);
}

public static function mb4utf8($m = ''){
        if (is_string($m)){
                preg_match_all('/&#x([a-fA-F0-9]{4,5});/',$m,$p);
                foreach ($p[1] as $k => $h) {
                        $p[1][$k] = mb_convert_encoding( pack('H*', str_pad($h, 8, '0', STR_PAD_LEFT) ) ,'UTF-8','UTF-32');
                }
                return str_replace($p[0],$p[1],$m);
        }elseif(is_array($m)){
                foreach ($m as &$v) {
                        $v = self::mb4utf8($v);
                }
        }
        return $m;
}



变更:

public static function fetch($resourceid, $type = MYSQL_ASSOC) {
-        return self::$db->fetch_array($resourceid, $type);
+        return self::mb4utf8(self::$db->fetch_array($resourceid, $type));
}


public static function fetch_first($sql, $arg = array(), $silent = false) {
        $res = self::query($sql, $arg, $silent, false);
-        $ret = self::$db->fetch_array($res);
+        $ret = self::mb4utf8(self::$db->fetch_array($res));
        self::$db->free_result($res);
        return $ret ? $ret : array();
}


public static function fetch_all($sql, $arg = array(), $keyfield = '', $silent=false) {
        $data = array();
        $query = self::query($sql, $arg, $silent, false);
-        while ($row = self::$db->fetch_array($query)) {
+        while ($row = self::mb4utf8(self::$db->fetch_array($query))) {
                if ($keyfield && isset($row[$keyfield])) {
                        $data[$row[$keyfield]] = $row;
                } else {


public static function result($resourceid, $row = 0) {
-        return self::$db->result($resourceid, $row);
+        return self::mb4utf8(self::$db->result($resourceid, $row));
}

public static function quote($str, $noarray = false) {
        if (is_string($str)){
+                $str = self::utf8mb4($str);
                return '\'' . mysql_escape_string($str) . '\'';
        }

修改了 \source\function\function_core.php 中的 function dhtmlspecialchars($string, $flags = null) 函数:
$string = preg_replace('/&((#(\d{3,6}|x[a-fA-F0-9]{4,5}));)/', '&\\1', $string);

回复

使用道具 举报

156

主题

303

帖子

1664

积分

新手上路

Rank: 1

积分
1664
 楼主| 发表于 2018-6-1 18:07:02 | 显示全部楼层
也支持这些字:
𨳈𩰊𩰋 𠂭𡆵𡈨 𡈹𡈇𠕲
理论上支持全部unicode文字
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|私人论坛

GMT+8, 2026-2-20 10:09 , Processed in 0.034686 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表