Validators

PhoneNumber

Zend\I18n\Validator\PhoneNumber allows you to determine if a given value is a valid phone number. Phone numbers are specific to country codes.

Basic Usage

$validator = new Zend\I18n\Validator\PhoneNumber();

var_dump($validator->isValid('+4930123456')); // true

By default, if no country code is provided, PhoneNumber will use the system locale provide by PHP's Locale::getDefault() and Locale::getRegion() to extract the country code.

(The above example assumes that the environment locale is set to de_DE.)

Using Country

The ISO 3611 country code can be set for validations.

$validator = new Zend\I18n\Validator\PhoneNumber(['country' => 'DE']);

var_dump($validator->isValid('+4930123456')); // true
$validator = new Zend\I18n\Validator\PhoneNumber();
$validator->setCountry('DE');

var_dump($validator->isValid('+4930123456')); // true
Locale::setDefault('de_DE');

$validator = new Zend\I18n\Validator\PhoneNumber();

var_dump($validator->isValid('+4930123456')); // true

Get Current Value

To get the current value of this option, use the getCountry() method.

$validator = new Zend\I18n\Validator\PhoneNumber(['country' => 'US']);

echo $validator->getCountry(); // 'US'

Default Value

By default, if no country is provided, PhoneNumber will use the system locale provide by PHP's Locale::getDefault() and Locale::getRegion() to extract the region code.

Using Allowed Phone Number Patterns

$validator = new Zend\I18n\Validator\PhoneNumber([
    'allowed_types' => ['emergency'],
    'country'       => 'US',
]);

var_dump($validator->isValid(911)); // true
var_dump($validator->isValid(999)); // false
$validator = new Zend\I18n\Validator\PhoneNumber();
$validator->allowedTypes(['emergency']);
$validator->setCountry('US');

var_dump($validator->isValid(911)); // true
var_dump($validator->isValid(999)); // false

Possible values for allowed patterns are:

  • emergency
  • fixed
  • general
  • mobile
  • pager
  • personal
  • premium
  • shared
  • shortcode
  • tollfree
  • uan
  • voicemail
  • voip

Notice

The complete list of allowed patterns is not available for each country code. Please check the file for your country code with the supported types in the zend-i18n repository on GitHub or in the vendor/zendframework/zend-i18n/src/Validator/PhoneNumber directory of your project folder.

Get Current Value

To get the current value of this option, use the allowedTypes() method with the value null.

$validator = new Zend\I18n\Validator\PhoneNumber(['allowed_types' => ['emergency']]);

var_dump($validator->allowedTypes(null)); // ['emergency']

Default Value

The following phone number patterns are allowed per default:

  • fixed
  • general
  • mobile
  • personal
  • tollfree
  • uan
  • voip

Strict Validation

By default, the phone numbers are validated against strict number patterns. To allow validation with all possible phone numbers, the allow_possible option can be used.

$validator = new Zend\I18n\Validator\PhoneNumber([
    'allow_possible' => true,
    'allowed_types'  => ['emergency'],
    'country'        => 'US',
]);

var_dump($validator->isValid(911)); // true
var_dump($validator->isValid(999)); // true
var_dump($validator->isValid(9999)); // false
$validator = new Zend\I18n\Validator\PhoneNumber();
$validator->allowPossible(true);
$validator->allowedTypes(['emergency']);
$validator->setCountry('US');

var_dump($validator->isValid(911)); // true
var_dump($validator->isValid(999)); // true
var_dump($validator->isValid(9999)); // false

Get Current Value

To get the current value of this option, use the allowPossible() method with the value null.

$validator = new Zend\I18n\Validator\PhoneNumber(['allow_possible' => true]);

var_dump($validator->allowPossible(null)); // true

Default Value

The default value of this option is false.

Specify Country Code on Validation

The country code can be specified with the context parameter on the isValid method. This allows to validate phone numbers for different country codes with the same validator instance without the usage of the setCountry() method.

$validator = new Zend\I18n\Validator\PhoneNumber([
    'country' => 'country-code', // Defines a placeholder
]);

var_dump($validator->isValid('+37067811268', ['country-code' => 'LT'])); // true
var_dump($validator->isValid('+37067811268', ['country-code' => 'DE'])); // false
var_dump($validator->isValid('+37067811268', ['country-code' => 'US'])); // false

Found a mistake or want to contribute to the documentation? Edit this page on GitHub!