LoginSignup
16
13

More than 5 years have passed since last update.

MySQLのutf8で保存できない文字を弾きたい

Last updated at Posted at 2014-02-20

追記

コメントで@mpywさんの紹介されてるコードが有効な場合があります。ご検討ください。

要するにUTF-8にすると4バイトになる文字を弾きたい。MySQLが悪い。元コードはクラスの静的メソッド。

<?php
function assert_mysql_utf8 ($value)
{
    $len = mb_strlen($value, 'utf-8');
    for ($n = 0; $n < $len; $n++) {
        $c = mb_substr($value, $n, 1, 'utf-8');
        if (strlen($c) > 3) {
            throw new RangeException;
        }
    }
}

strlenmb_strlenの差異を利用する。

果たしてこんな検証処理をアプリケーション側でするべきなのか激しく悩む。全部MySQLが悪い。

16
13
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13