Validator::extend('kana', function ($attribute, $value, $parameters) {
if (mb_strlen($value) > 100) {
return false;
}
if (preg_match('/[^ぁ-んー]/u', $value) !== 0) {
return false;
}
return true;
});
Validator::extend('url', function ($attribute, $value, $parameters) {
return(preg_match("/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/", $value));
});
Validator::extend('alpha_number', function ($attribute, $value, $parameters) {
return(preg_match("/^[\w-]*$/", $value));
});
Validator::extend('env_dep', function ($attribute, $value, $parameters) {
$pass = false;
foreach (preg_split('//u', $value, -1, PREG_SPLIT_NO_EMPTY) as $s) {
$pass = (strlen($s) == strlen(mb_convert_encoding(mb_convert_encoding($s, 'SJIS', 'UTF-8'), 'UTF-8', 'SJIS'))) ? true : false;
}
return $pass;
});
半角英数字
Validator::extend('half_width_alpha_numeric', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[a-zA-Z0-9]+$/u", $value));
});
半角英数字、半角ハイフン
Validator::extend('half_width_alpha_numeric_hyphen', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[a-zA-Z0-9\-]+$/u", $value));
});
全角(ひらがな、カタカナ、漢字)
Validator::extend('kanji_katakana_hiragana', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[ぁ-んァ-ヶ一-龥々]+$/u", $value));
});
```php:全角ひらがな
Validator::extend('hiragana', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[ぁ-ん]+$/u", $value));
});
全角(ひらがな、カタカナ、漢字、数字、英字、ハイフン全角、中黒、全角シングルクオート、@全角)
Validator::extend('full_width', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[ぁ-んァ-ヶ一-龥々0-9a-zA-Zー・’@]+$/u", $value));
});
全角(ひらがな、カタカナ、漢字、数字、英字、全角ハイフン、中黒)、半角英数字、半角ハイフン
Validator::extend('not_half_width_kana_symbol', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[ぁ-んァ-ヶ一-龥々0-9a-zA-Zー・a-zA-Z0-9\-]+$/u", $value));
});
半角英数記号
Validator::extend('half_width_alpha_numeric_symbol', function ($attribute, $value, $parameters, $validator) {
if (is_null($value))
return true;
return(preg_match("/^[!-~]+$/", $value));
});
電話番号(任意入力)
// 入力値にNULLまたは半角数字でない値が混在している場合、バリデーションエラー
Validator::extend('optional_phone_no', function ($attribute, $value, $parameters, $validator) {
// null check
$null_count = 0;
foreach ($value as $v) {
if (is_null($v))
$null_count++;
}
// 全てNULLだった場合、バリデーションを行わない
if ($null_count === 3)
return true;
// validate check
$validate_ok_count = 0;
foreach ($value as $v) {
if (!is_null($v)) {
if (preg_match("/^[0-9]+$/u", $v)) {
$validate_ok_count++;
}
}
}
// 全て半角数字だった場合、バリデーションOK
if ($validate_ok_count === 3)
return true;
return false;
});
配列の要素を文字列結合し、その文字列が指定された文字列長以下であること
Validator::extend('max_implode_array', function ($attribute, $value, $parameters, $validator) {
$max_len = (int) $parameters[0];
if (mb_strlen(implode('', $value)) > $max_len) {
return false;
}
return true;
});
電話番号(必須)
Validator::extend('phone_no', function ($attribute, $value, $parameters, $validator) {
// null check
$null_count = 0;
foreach ($value as $v) {
if (is_null($v)) {
$null_count++;
}
}
// NULLがあった場合、バリデーションエラー
if ($null_count > 0) {
return false;
}
// 半角数字でバリデーション
$validate_ok_count = 0;
foreach ($value as $v) {
if (!is_null($v)) {
if (preg_match("/^[0-9]+$/u", $v)) {
$validate_ok_count++;
}
}
}
// 全て半角数字だった場合、バリデーションOK
if ($validate_ok_count === 3) {
return true;
}
return false;
});
####半角英数字記号・全角英数字かなカナ記号の一覧 https://qiita.com/sta/items/848e7a8c4699a59c604f