【php】4バイト文字を削除する
問題
スマートフォンなどから絵文字が送信されてくるのですが、MySQLに格納するときにSQLがぶった切られて困っています。
UTF-8で4byteになる文字を排除したいのですが、どうやって判定するとよいですか。
答え
勝手に削除するなら、こうする。
$str = preg_replace('/[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]/', '', $str);
preg_match() で、4byte文字が混ざっているかどうかを見て、入力チェックのエラーにするのもよいでしょう。
コメント