以前からCakePHPのバリデーションルールのalphaNumericが日本語を通してしまうという問題がありましたが、CakePHP2.2.0でも同様のようです。
CakePHP1.3系ならAppModelで
function alphaNumeric($check) {
return preg_match('/^[a-zA-Z0-9]+$/', $value);
}
(多分)これで良かったと思うのですが、CakePHP2系になってから、第1引数に渡ってくる値がarray([フィールド名] => [値])になったようなので、下記のようにします。
public function alphaNumeric($check) {
$value = array_values($check); // 配列の添字を数値添字に変換して・・・
$value = $value[0]; // 最初の値を取る
return preg_match('/^[a-zA-Z0-9]+$/', $value);
}
