php如何判斷emoji

來源:互聯網
上載者:User
IOS輸入的emoji mysql儲存不了(線上不能改utf8mb4),如何判斷輸入的字元含有emoji,然後提示

回複內容:

IOS輸入的emoji mysql儲存不了(線上不能改utf8mb4),如何判斷輸入的字元含有emoji,然後提示

不用判斷是否是emoji,傳輸過來的用json_encode加密之後存入資料庫,然後取出的時候用json_decode一下顯示出來就可以了,json_decode之前也可以urlencode一下,取出的時候urldecode一下;

存入資料庫之前

$message = json_encode($message);

取出之後

$message = json_decode($message)

code:

$regex = '/([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';var_dump(preg_match($regex, '?'));var_dump(preg_match($regex, '?'));var_dump(preg_match($regex, '?'));var_dump(preg_match($regex, '測試'));var_dump(preg_match($regex, 'hello, world'));var_dump(preg_match($regex, 'testing'));var_dump(preg_match($regex, '中文 English'));

result:

int(1)int(1)int(1)int(0)int(0)int(0)int(0)

運算式是找來的,可以去看下utf8的碼錶中emoji的範圍(或者從unicode碼錶範圍轉utf8)

不過建議還是改utf8mb4,這種遷移基本是無痛的,充分測試下即可

根本解決辦法是資料庫支援emoji

你確定不把emoji存入資料庫,而是檢測到然後提示?

檢測

//返回true就表示有emojifunction testEmoji($str){    $text = json_encode($str); //暴露出unicode    return preg_match("/(\\\u[ed][0-9a-f]{3})/i",$text);}

轉義並存入資料庫

看我以前的問題吧 http://segmentfault.com/q/1010000003711491

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.