ホームページ >バックエンド開発 >PHPチュートリアル >PHP はモバイル端末から送信された絵文字をどのように処理しますか?

PHP はモバイル端末から送信された絵文字をどのように処理しますか?

WBOY
WBOYオリジナル
2016-06-23 13:48:20966ブラウズ

現在、モバイル端末では、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('/ @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);


モデレーター、ありがとうございます。試してみてください


アップグレードしなくても大丈夫です

データベースに入れる前に

$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);

$text = preg_replace_callback('/[xf0- xf7].{3}/', function($r) { return '';}, $text);


受け取りました、モデレーターありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。