9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel バリデーションのメモ

Posted at
        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
9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?