How to validate phone number in laravel 5.2? [closed] How to validate phone number in laravel 5.2? [closed] php php

How to validate phone number in laravel 5.2? [closed]


One possible solution would to use regex.

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

This will check the input starts with 01 and is followed by 9 numbers. By using regex you don't need the numeric or size validation rules.

If you want to reuse this validation method else where, it would be a good idea to create your own validation rule for validating phone numbers.

Docs: Custom Validation

In your AppServiceProvider's boot method:

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

This will allow you to use the phone_number validation rule anywhere in your application, so your form validation could be:

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

In your validator extension you could also check if the $value is numeric and 11 characters long.


From Laravel 5.5 on you can use an artisan command to create a new Rule which you can code regarding your requirements to decide whether it passes or fail.

Ej:php artisan make:rule PhoneNumber

Then edit app/Rules/PhoneNumber.php, on method passes

/** * 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;}

Then, use this Rule as you usually would do with the validation:

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

docs


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');    });

Usage

Insert this code in the app/Providers/AppServiceProvider.php to be booted up with your application.

This rule validates the telephone number against the given pattern above that i found after
long search it matches the most common mobile or telephone numbers in a lot of countries
This will allow you to use the phone validation rule anywhere in your application, so your form validation could be:

 'phone' => 'required|numeric|phone'