MySQL中的UTF8編碼每個字符只支持最大3位元組,而emoji是4個位元組的,不能直接存盤進去,所以,需要將emoji轉換一下,
這邊提供一個將4個位元組的utf8編碼轉成&#xxxxxx;的方法:
$content = preg_replace_callback('/[\x{010000}-\x{10ffff}]/u', function($v){
return '&#'.current(unpack('N',iconv('UTF-8', 'UCS-4', $v[0]))).';';
}, $content);
解碼也簡單,反過來一下就好了
$content = preg_replace_callback('/&#(\d+);/', function($v){
if ($v[1] >= 0x10000 && $v[1] <= 0x10ffff) {
return iconv('UCS-4', 'UTF-8', pack('N',$v[1]));
}
return $v[0];
}, $content);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17434.html
標籤:PHP
上一篇:Swoole 中使用 WebSocket 異步服務器、WebSocket 協程服務器
下一篇:[PHP] php8的jit不支持32位系統WARNING: JIT not supported by host architecture
