PHP中處理emoji表情
今天遇到評論中加入emoji表情導致整個字元存到資料庫中為空的情況,出現這種情況是因為mysql資料庫表用的utf-8字符集也就是3位元組,但emoji表情是4位元組,導致無法insert.
下面寫下怎麼存到資料庫和怎麼清除掉emoji.
PHP中將emoji表情儲存到mysql資料庫
修改資料庫字符集
將對應的表字符集改為utf8mb4,排序規則改為utf8mb4_unicode_ci
將對應的欄位的字符集改為utf8mb4,排序規則改為utf8mb4_unicode_ci
-
修改連結方式
在資料庫的配置檔案中將charset改為utf8mb4,將collation改為utf8mb4_unicode_ci。
'mysql' => [
'host' => env('DB_HOST_SLAVE_ONE'),
'username' => env('DB_USERNAME_SLAVE_ONE'),
'password' => env('DB_PASSWORD_SLAVE_ONE'),
'driver' => 'mysql',
'database' => env('DB_DATABASE'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,],
記得重啟mysql,嗯,一定要重啟。
PHP將emoji從字串中清除
步驟:
將字元中原有
?
替換掉將字串從utf-8轉為iso-8859-1
再還原回utf-8(mb_convert_encoding函式會將無效的字元轉為
?
)將這些無效的
?
用''
替換掉將最初的
?
還原回來
程式碼如下:
function removeEmojis( $string )
{
$string = str_replace( "?", "{%}", $string );
$string = mb_convert_encoding( $string, "ISO-8859-1", "UTF-8" );
$string = mb_convert_encoding( $string, "UTF-8", "ISO-8859-1" );
$string = str_replace( array( "?", "? ", " ?" ), array(""), $string );
$string = str_replace( "{%}", "?", $string );
return trim( $string );
}
驗證字串中是否含有emoji表情
還有些情況是我們直接驗證,如果含有emoji表情則報格式錯誤,程式碼如下。
public function findEmoji($source){
$mat = [];
preg_match_all('/./u', $source,$mat);
foreach ($mat[0] as $v){
if(strlen($v) > 3){return true;}
}
return false;
}
相關文章
- 前端如何處理emoji表情前端
- PHP轉換emoji表情為HTML字元實體PHPHTML字元
- Java處理emojiJava
- Laravel 專案實戰中如何快速整合 Emoji 表情包?Emoji 表情包太豐富了Laravel
- php+mysql 解決emoji表情符號問題PHPMySql符號
- mysql 儲存emoji表情MySql
- MySQL儲存 emoji 表情MySql
- 判斷字串中是否包含Emoji表情程式碼字串
- 在 Laravel 中使用 emoji 表情Laravel
- iOS Emoji表情編碼/解碼iOS
- Android Jetpack - Emoji表情符號初探AndroidJetpack符號
- 如何在Java中輕鬆處理Emoji Unicode - UdayakumarJavaUnicode
- MYSQL資料庫與Emoji表情的故事MySql資料庫
- emoji等表情符號存mysql的方法符號MySql
- iOS 11新Emoji表情偷跑:好歡樂iOS
- PHP中如何處理時區PHP
- FCPX外掛:36個有趣可愛卡通emoji表情貼紙動畫Square Emoji動畫
- 【Mysql】關於mysql存入emoji表情的問題MySql
- iOS使用Unicode9.0 emoji表情的方法iOSUnicode
- 原生js 實現輸入框emoji表情釋出JS
- js判斷字串是否含有特殊字元和emoji表情JS字串字元
- MySQL 資料庫儲存 Emoji 表情及特殊符號MySql資料庫符號
- Windows10系統使用自帶Emoji表情的方法Windows
- win10自帶字元表情如何使用_win10 emoji表情符號的使用教程Win10字元符號
- 如何在 PHP 中處理 Protocol Buffers 資料PHPProtocol
- PHP系列(五)PHP字串處理PHP字串
- Mysql伺服器無法存emoji表情的解決方案MySql伺服器
- 相見恨晚的 MacBook 使用技巧「1」emoji表情賣萌Mac
- MySQL 04-EMOJI 表情與 UTF8MB4 的故事MySql
- PHP錯誤處理和異常處理PHP
- PHP 錯誤處理PHP
- PHP 時間處理PHP
- php錯誤處理PHP
- PHP處理-微信支付PHP
- [工具]PHP 中的日期時間處理利器 – CarbonPHP
- [工具]PHP 中的日期時間處理利器 - CarbonPHP
- 002——php字串中的處理函式(一)PHP字串函式
- [php]php錯誤處理機制PHP