Help us understand the problem. What is going on with this article?

Laravel バリデーションのメモ

        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

joyworks
Webアプリケーション開発・制作やBtoCのWebサイト開発をはじめ、幅広い開発プロジェクトを手がけている当社。近年は帰社しやすい環境づくりのために渋谷にオフィスを移転したり、当社専属のIT講師を採用し、AI研修などに力を入れています。
https://www.joyworks.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした