ホームページ >バックエンド開発 >PHPチュートリアル >PHP はモバイル端末から送信された絵文字をどのように処理しますか?
現在、モバイル端末では、Baidu 入力方式の顔文字など、多くの顔文字が提供されています。
多くの絵文字は、php を使用して取得した後、認識できなくなります。mysql に保存すると、絵文字の位置から始まる内容が失われます。
たとえば、ユーザーが次のように入力した場合: Start content [Expression] End content
php で取得して mysql に保存すると、Start content [
に影響を与えずにこれらの認識できない式を削除する方法はありますか?次の内容はどうですか? 現在 utf8_general_ci である場合、utf8mb4 に直接変更できますか?
さらに、myphpadmin に utf8mb4 が表示されません。どうすれば変更できますか?
バージョンが足りないみたいです
バージョンアップしなくても大丈夫です $text = preg_replace_callback('/[xf0- xf7].{3}/', function($ r) { return '@E' .base64_encode($r[0]);}, $text);アップグレードしなくても大丈夫
保存前
$text = preg_replace_callback('/[xf0-xf7].{3}/ ', function($r) { return '@E' .base64_encode($r[0]);}, $text);
$ text = preg_replace_callback('/@E(.{6}== )/', function($r) {returnbase64_decode($r[1]);}, $text);
モデレーター、ありがとうございます。試してみてください
アップグレードしなくても大丈夫です
$text = preg_replace_callback('/[xf0-xf7].{3}/', function($r) { return '@E' .base64_encode($r[0]);}, $text);
配信後
$ text = preg_replace_callback('/@E(.{6}==)/', function($r) ) {returnbase64_decode($r[1]);}, $text);
正規表現にあまり詳しくありませんが、モデレーターが指定した方法を使用して、これらの絵文字を除外したいだけの場合は、 return を使用できます。 return ''; と書いても大丈夫ですか?
$text = preg_replace_callback('/[xf0- xf7].{3}/', function($r) { return '';}, $text);
受け取りました、モデレーターありがとうございます