1. Create the function
Create a PHP validate phone number function, called validating(), with a parameter of $phone.
function validating($phone){
2. Create the statement
Then you have to create an if/else statement for determining whether the given phone number is valid or not. Let's say that the genuine phone number is 10 digits long, ranging from 0 to 9. To perform the validation, you have to utilize this regular expression: /^[0-9]{10}+$/. Also, you have to use the reg_match() function.
if(preg_match('/^[0-9]{10}+$/', $phone)) {
echo "Valid Phone Number";
} else {
echo "Invalid Phone Number";
}
If the given telephone number matches the specified regular expression, it will print “Valid Phone Number.” Otherwise, it will print “Invalid Phone Number” as the error message.
3. Call the function
Now, let's try verifying different phone numbers by calling our validating() function for number validation in PHP:
validating("1016660180"); //10 digits valid phone number
validating("101666018000"); //12 digits invalid phone number
validating("101$666*01"); //10 letters phone number with invalid characters
validating("101$666*0180"); //10 digits phone numbers with invalid characters
4. You will see this output:
Valid Phone Number
Invalid Phone Number
Invalid Phone Number
Invalid Phone Number
Overall, the following code will look like this:
function validating($phone){
if(preg_match('/^[0-9]{10}+$/', $phone)) {
echo " Valid Phone Number";
} else {
echo " Invalid Phone Number";
}
}
validating("1016660180"); //10 digits valid phone number
validating("101666018000"); //12 digits invalid phone number
validating("101$666*01"); //10 letters phone number with invalid characters
validating("101$666*0180"); //10 digits phone numbers with invalid characters
That’s it! You have learned the way of validating phone numbers in PHP using regular expressions. The same rules apply to mobile number validation.
Format variation of phone numbers
Phone numbers have different formats. So, verifying them could have been really challenging. Fortunately, using a PHP function has made the process very simple.
As said earlier, the in-built PHP filter can make it easier for you to validate phone number. Here, you will use it to validate numbers with different formats.
Cell phones
1. First, you have to create a function, called validating().
function validating($phone){
2. Create a variable, called valid_number. It will have the filter_var() function with a FILTER_SANITIZE_NUMBER_INT constant.
$valid_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
3. Now, you can print the valid_number variable.
echo $valid_number.;
}
4. Finally, let’s call the validating() PHP function with for mobile number validation.
validating("101-666-0260");
You will see this output: 101-666-0260
Overall, the code will look like this:
function validating($phone){
$valid_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
echo $valid_number.;
}
validating("101-666-0260");
That’s how you validate a cell phone number with the in-built PHP filter.
Special characters
A phone number can have certain characters, like + and -. But what will happen if the user enters the number incorrectly with special characters, like $ and *? You need to find a way to filter them out.
By using filter_var() function, you can strip them off from the given phone number.
Let’s try validate a phone number that contains $ and *, like this: 101$777*0280
Let’s use this code:
function validating($phone){
$valid_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
echo $valid_number.;
}
validating("101$777*0280");
You will see an output with $ and * being removed from the given phone number: 1017770280
International numbers
International phone numbers start with + with some also needing the area code. So, you need to figure out a way to prevent it from being filtered out. Fortunately, filter_var() function supports the + sign. So, you will never have to worry about it being stripped off.
Let’s try performing something for international users, for example an Indian phone number validation. The number looks like this: +91-202-5555-0234
As you can see, the country code of India is +91. How will filter_var() function react if an Indian phone number is entered? Will it filter out the + sign?
Let’s use this code to figure out what happens:
function validating($phone){
$valid_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
echo $valid_number.;
}
validating("+91-202-5555-0234");
You will see an output like this: +91-202-5555-0234
As you can see, the filter_var() function supports the + sign. So, it’s not being filtered out.
Alternative Solution
Validate phone number with an API
By using APIs, you can validate phone numbers effortlessly. They come with all the necessary functions for verification. You just need to enter the number. The phone number verification API will handle the rest. You don’t have to write any code from scratch. So, you can validate the phone numbers effortlessly.
You can try using Abstract’s phone number validation and verification API. It is reliable, blazing-fast, and easy to maintain. It can help you to validate phone numbers effortlessly.
Let’s use Abstract’s Phone Number Validation and Verification API to validate this phone number: 14154582468.
https://phonevalidation.abstractapi.com/v1/
? api_key = YOUR_UNIQUE_API_KEY
& phone = 14154582468
If the phone number request is successful, you will see this output:
{
"phone": "14154582468",
"valid": true,
"local_format":"4154582468",
"international_format": "+14154582468",
"country_name": "United States of America",
"country_code": "US",
"country_prefix":"+1",
"registered_location": "San Francisco, CA",
"carrier":"Verizon USA",
"line_type": "Mobile",
}
The given phone number is valid, as the "valid" field is set to “true.” Also, it provides you with a variety of geolocation data, including country name and registered location of the phone number. You can utilize this information to enhance your marketing strategy.
As you can see, you don’t have to write any code from scratch. There is no need to utilize regular expressions or PHP in-built functions. You just need to get the API key and enter the phone number that you want to verify. Abstract’s Phone Number Validation and Verification API will handle the rest.
Frequently Asked Questions
How do I validate a phone number in PHP using a regular expression?
You can use PHP's preg_match() function with a pattern like /^[0-9]{10}+$/ to check that a number contains exactly ten digits. This works well for basic US formats, but it will reject valid international numbers that include a country code prefix or formatting characters such as hyphens and parentheses.
What does filter_var() with FILTER_SANITIZE_NUMBER_INT do for phone validation?
FILTER_SANITIZE_NUMBER_INT strips any character that is not a digit, a plus sign, or a hyphen, so it cleans up numbers that users submit with spaces, dots, or other symbols before you run further validation. It preserves the leading + needed for international E.164 format, which makes it a useful first step before applying a regex or passing the number to an API.
How can I validate international phone numbers in PHP without a library?
Use a regex that enforces the E.164 standard, such as /^\+[1-9]\d{1,14}$/, which matches a leading plus sign followed by up to 15 digits. This covers all country codes and number lengths defined by the standard. For even broader format support, PHP ports of Google's libphonenumber (such as giggsey/libphonenumber-for-php or brick/phonenumber) handle country-specific numbering plans automatically.
How do I use Abstract's Phone Validation API in PHP?
Install the official package with composer require abstractapi/php-phone-validation, then call AbstractPhoneValidation::configure() with your API key and AbstractPhoneValidation::verify() with the phone number. The API returns a JSON object with fields including valid (boolean), format.international, carrier, line_type, and country details, so you get carrier and line-type data alongside the validity check in a single call.
When should I use a regex instead of an API for phone validation in PHP?
A regex is appropriate for fast, offline format checks when you only need to confirm that a number looks structurally correct, such as during form input sanitization. Use an API when your application depends on accurate carrier identification, line-type detection (mobile vs. landline), or up-to-date numbering data across more than 190 countries — for example, before routing an SMS or screening for fraud.
What PHP libraries are available for more advanced phone number validation?
Two widely used options are giggsey/libphonenumber-for-php and brick/phonenumber, both of which are ports of Google's libphonenumber. They support parsing, formatting, and region-aware validation without making an external HTTP request. brick/phonenumber requires PHP 8.1 or later, so check your environment's PHP version before choosing a library.


