デフォルトではマルチバイト対応してないので、自分で対応させてみた。やり方は簡単。Validation クラスを継承してマルチバイト対応に書き換える(オーバーライド)だけよん。
ただ、継承する場合は決まり事があるので注意してね。継承する自クラス名の頭に MY_ 、継承元の親クラス名の頭に CI_ を付けなきゃだめよ。あと、自クラスでコンストラクタを呼ぶ場合は、コンストラクタの中で親クラスのコンストラクタを呼び出しましょう。
<?php
class MY_Validation extends CI_Validation
{
function min_length($str, $val)
{
$CI =& get_instance();
if (preg_match("/[^0-9]/", $val))
{
return FALSE;
}
return (mb_strlen($str, $CI->config->item('charset')) < $val) ? FALSE : TRUE;
}
function max_length($str, $val)
{
$CI =& get_instance();
if (preg_match("/[^0-9]/", $val))
{
return FALSE;
}
return (mb_strlen($str, $CI->config->item('charset')) > $val) ? FALSE : TRUE;
}
}
?>
作成した継承クラス MY_Validation.php は、application/libraries フォルダ内に 放り込めば自動で読み込んでくれますわ。
スポンサーサイト