CakePHP2.xでバリデーションが動かない(alphaNumeric)

CakePHPを勉強し始めて、バリデーションでさっそく躓きました。
思い当たるミスは無く、原因の切り分けにものすごい時間がかかりました。

原因はバリデーションのalphaNumericの処理がちょっと独特なために、本来であれば英数字のみ許可するはずが全角文字も通ってしまっていました。

直すのはlib/Cake/Utility/Validation.phpです。コメント部分の正規表現を置き換えればOKです。
[php] public static function alphaNumeric($check) {
if (is_array($check)) {
extract(self::_defaults($check));
}

if (empty($check) && $check != ‘0’) {
return false;
}
// return self::_check($check, ‘/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/Du’);
return self::_check($check, ‘/^[a-z\d]*$/i’);
}[/php]

スポンサーリンク
レクタングル大