CakePHPのバリデーションで、アルファベットのみかどうかチェックする関数を作ってみた。
2013/07/02
数回前の「日本語文字数をチェック」と同様、バリデーション時にアルファベットのみかどうかをチェックする関数です。
CakePHP1.3で使っていましたが、2.x でも使えると思います。
どのバリデーションからも使いたいので、日本語文字数をチェック」と同様 app_model に記述しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/** * アルファベットのみかどうかチェック * */ function is_alphabet_only( $field=array() ) { if (is_array($field)) { foreach ($field as $name => $value) { if (preg_match("/^([a-zA-Z])*$/u", $value)) { return true; } else { return false; } } } else { if (preg_match("/^([a-zA-Z])*$/u", $field)) { return true; } else { return false; } } } |
preg_match にある u オプションは、UTF-8のオプションです。
バリデーション対象のモデルからはモデルからは以下のようにしてコールすれば、bool値が返ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var $validate = array( 'cc_family_name' => array( array( 'rule' => 'notEmpty', 'message' => '『カード名義(姓)』を入力して下さい。', 'required' => true, 'allowEmpty' => false, ), array( 'rule' => array('is_alphabet_only'), 'message' => '『カード名義(姓)』は半角英字で入力して下さい。', ), ) ); |
[tgAmazonItemLookup asin="4088707702" related="1"]