programing

Larabel 5.2에서 전화번호를 확인하는 방법

prostudy 2022. 9. 9. 09:18
반응형

Larabel 5.2에서 전화번호를 확인하는 방법

사용자 입력 전화번호를 확인하고 싶습니다.번호는 정확히 11로 시작하고 01로 시작하며 값 필드는 숫자만 사용해야 합니다.Laravel 검증을 사용하여 어떻게 해야 합니까?

컨트롤러는 다음과 같습니다.

  public function saveUser(Request $request){
        $this->validate($request,[
            'name' => 'required|max:120',
            'email' => 'required|email|unique:users',
            'phone' => 'required|min:11|numeric',
            'course_id'=>'required'
            ]);

        $user = new User();
        $user->name=  $request->Input(['name']);
        $user->email=  $request->Input(['email']);
        $user->phone=  $request->Input(['phone']);
        $user->date = date('Y-m-d');
        $user->completed_status = '0';
        $user->course_id=$request->Input(['course_id']);
        $user->save();
       return redirect('success');

    }

가능한 해결책 중 하나는 regex를 사용하는 것입니다.

'phone' => 'required|regex:/(01)[0-9]{9}/'

이렇게 하면 입력이 01로 시작하고 그 뒤에 9개의 숫자가 계속되는지 확인합니다.하면 regex가 numeric ★★★★★★★★★★★★★★★★★」size검증 규칙

이 검증 방법을 다른 장소에서 재사용하는 경우는, 전화 번호의 검증에 관한 독자적인 검증 규칙을 작성하는 것을 추천합니다.

문서: 커스텀 검증

고객님의 고객명AppServiceProvider의 »boot★★★★

Validator::extend('phone_number', function($attribute, $value, $parameters)
{
    return substr($value, 0, 2) == '01';
});

하면 " " " 를 할 수 있습니다.phone_number어플리케이션의 임의의 장소에서 검증 규칙을 실행할 수 있으므로 폼 검증은 다음과 같습니다.

'phone' => 'required|numeric|phone_number|size:11'

에서는 '검증자'가 '검증자'인지 .$value11시 정각시

Larabel 5.5부터는 장인 명령어를 사용하여 새로운 규칙을 작성할 수 있습니다.이 규칙은 요건에 따라 코드화하여 합격 여부를 결정할 수 있습니다.

EJ:php artisan make:rule PhoneNumber

다음 " " " 를 편집합니다.app/Rules/PhoneNumber.php의 경우

/**
 * Determine if the validation rule passes.
 *
 * @param  string  $attribute
 * @param  mixed  $value
 * @return bool
 */
public function passes($attribute, $value)
{

    return preg_match('%^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$%i', $value) && strlen($value) >= 10;
}

그런 다음 이 규칙을 보통 검증과 동일하게 사용합니다.

use App\Rules\PhoneNumber;

$request->validate([
    'name' => ['required', new PhoneNumber],
]);

문서

Validator::extend('phone', function($attribute, $value, $parameters, $validator) {
        return preg_match('%^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$%i', $value) && strlen($value) >= 10;
    });

Validator::replacer('phone', function($message, $attribute, $rule, $parameters) {
        return str_replace(':attribute',$attribute, ':attribute is invalid phone number');
    });

사용.

.app/Providers/AppServiceProvider.php어플리케이션과 함께 부팅됩니다.

는 위의 검증됩니다.이 패턴은 전화 합니다.
번호 또는 합니다.
하면 " " " 를 할 수 있습니다.phone내 에서 검증 을 사용할 수 폼은 다음과 같이 할 수식 검증은 다음과 같습니다.

'phone' => '필수|전화'

다음을 사용할 수 있습니다.

        'mobile_number' => ['required', 'digits:10'],

required|numeric|size:11required|min:11|numeric

이 전화 검증 패키지를 사용해 볼 수 있습니다.라라벨 전화기

갱신하다

최근 무료 Twilio 전화 조회 서비스를 사용하는 다른 패키지 Lavarel Phone Validator(stuyam/laravel-phone-validator)를 발견했습니다.

정말 생각해보면 전화번호를 확인할 때 고려해야 할 점이 많다.(특히 국제)패키지를 사용하는 것이 지금까지 받아들여지고 있는 답변보다 낫습니다.또한 regex와 같은 단순한 것을 원한다면 @SlateEntropy가 제안하는 것보다 더 나은 것을 사용하는 것을 추천합니다.(전화번호 확인을 위한 포괄적인 정규식 등)

아래 코드를 사용했는데 작동한다.

'PHONE' => 'required|regex:/(0)[0-9]/|not_regex:/[a-z]/|min:9',
$request->validate([
    'phone' => 'numeric|required',
    'body' => 'required',
]);

언급URL : https://stackoverflow.com/questions/36777840/how-to-validate-phone-number-in-laravel-5-2

반응형