想在PHP中使用表情符号(表情符号)

时间:2016-02-09 06:53:51

标签: php encode utf

我想将\xf0\x9f\x98\xad编码为\ud83d\ude2d并在PHP中从\ud83d\ude2d解码回\xf0\x9f\x98\xad。请提出一些功能。

我想将它用于表情符号。

实际上我的iPhone应用程序从API中获取\ud83d\ude2d并且我已将其存储在我的数据库中。现在要在浏览器中显示该表情符号,我必须将其转换为\xf0\x9f\x98\xad

我尝试过上网后的课程。

班级档案(cs.php):

class Emoji
{
    /**
     * Encode emoji in text
     * @param string $text text to encode
     */
    public static function Encode($text) {
        return self::convertEmoji($text,"ENCODE");
    }

    /**
     * Decode emoji in text
     * @param string $text text to decode
     */
    public static function Decode($text) {
        return self::convertEmoji($text,"DECODE");
    }

    private static function convertEmoji($text,$op) {
        if($op=="ENCODE"){
            return preg_replace_callback('/([0-9|#][\x{20E3}])|[\x{00ae}|\x{00a9}|\x{203C}|\x{2047}|\x{2048}|\x{2049}|\x{3030}|\x{303D}|\x{2139}|\x{2122}|\x{3297}|\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?/u',array('self',"encodeEmoji"),$text);
        }else{
                        return preg_replace_callback('/(\\\u[0-9a-fA-F]{4})+/',array('self',"decodeEmoji"),$text);
        }
    }

    private static function encodeEmoji($match) {
        return str_replace(array('[',']','"'),'',json_encode($match));
    }

    private static function decodeEmoji($text) {            
        if(!$text) return '';
        $text = $text[0];
        $decode = json_decode($text,true);
        if($decode) return $decode;
        $text = '["' . $text . '"]';
        $decode = json_decode($text);
        if(count($decode) == 1){
           return $decode[0];
        }
        return $text;
    }
}

我的正面文件:

include "cs.php";
echo $a = Emoji::Encode("\xf0\x9f\x98\xad")."<br>"; // gives me \ud83d\ude2d
echo $b = Emoji::Decode($a); // gives me 😭

当我尝试对字符进行编码时,我得到了完美的结果\ud83d\ude2d。但是当我尝试解码\ud83d\ude2d时,我遇到了一些奇怪的字符,例如😭

0 个答案:

没有答案