
CakePHPのバリデーションで、アルファベットのみかどうかチェックする関数を作ってみた。
2013/07/02
数回前の「日本語文字数をチェック」と同様、バリデーション時にアルファベットのみかどうかをチェックする関数です。
CakePHP1.3で使っていましたが、2.x でも使えると思います。
どのバリデーションからも使いたいので、日本語文字数をチェック」と同様 app_model に記述しています。
[php]
/**
* アルファベットのみかどうかチェック
*
*/
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;
}
}
}
[/php]
preg_match にある u オプションは、UTF-8のオプションです。
バリデーション対象のモデルからはモデルからは以下のようにしてコールすれば、bool値が返ります。
[php]
var $validate = array(
'cc_family_name' => array(
array(
'rule' => 'notEmpty',
'message' => '『カード名義(姓)』を入力して下さい。',
'required' => true,
'allowEmpty' => false,
),
array(
'rule' => array('is_alphabet_only'),
'message' => '『カード名義(姓)』は半角英字で入力して下さい。',
),
)
);
[/php]
[tgAmazonItemLookup asin="4088707702" related="1"]