MDL-86459 libraries: Upgrade libphonenumber-for-php-lite to 9.0.12

This commit is contained in:
yusufwib01
2025-08-29 10:56:04 +07:00
parent e3e51a0613
commit fea351a39d
521 changed files with 29359 additions and 43166 deletions
@@ -36,7 +36,7 @@ You can also use any other [PSR-4](http://www.php-fig.org/psr/psr-4/) compliant
### PHP Version Policy
This library will be updated to use [supported versions of PHP](https://www.php.net/supported-versions.php) only. At the moment, the main [giggsey/libphonenumber-for-php](https://github.com/giggsey/libphonenumber-for-php) library supports older PHP versions.
This library will be updated to use [supported versions of PHP](https://www.php.net/supported-versions.php) only.
## Documentation
@@ -135,12 +135,12 @@ If [giggsey/libphonenumber-for-php](https://github.com/giggsey/libphonenumber-fo
## Generating data
Generating the data is not normally needed, as this repository will generally always have the up to data metadata.
Generating the data is not normally needed, as this repository will generally always have the up to date metadata.
If you do need to generate the data, the commands are provided by [Phing](https://www.phing.info). Ensure you have all the dev composer dependencies installed, then run
To compile the data, run the composer script 'build'
```bash
$ vendor/bin/phing compile
composer run build
```
This compile task clones the [libphonenumber](https://github.com/google/libphonenumber) project at the version specified in [METADATA-VERSION.php](METADATA-VERSION.php).
This build process clones the [libphonenumber](https://github.com/google/libphonenumber) project at the version specified in [METADATA-VERSION.php](METADATA-VERSION.php).
@@ -26,14 +26,7 @@
"autoload": {
"psr-4": {
"libphonenumber\\": "src/"
},
"exclude-from-classmap": [
"/src/data/",
"/src/carrier/data/",
"/src/geocoding/data/",
"/src/timezone/data/"
]
}
},
"autoload-dev": {
"psr-4": {
@@ -64,18 +57,19 @@
},
"require-dev": {
"ext-dom": "*",
"friendsofphp/php-cs-fixer": "^3.12",
"infection/infection": "^0.28",
"pear/pear-core-minimal": "^1.10.11",
"pear/pear_exception": "^1.0.2",
"pear/versioncontrol_git": "^0.7",
"phing/phing": "^2.17.4",
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.2",
"phpunit/phpunit": "^10.5",
"symfony/console": "^6.0",
"symfony/var-exporter": "^6.0"
"friendsofphp/php-cs-fixer": "^3.71",
"infection/infection": "^0.29|^0.31.0",
"nette/php-generator": "^4.1",
"php-coveralls/php-coveralls": "^2.7",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.7",
"phpstan/phpstan-deprecation-rules": "^2.0.1",
"phpstan/phpstan-phpunit": "^2.0.4",
"phpstan/phpstan-strict-rules": "^2.0.3",
"phpunit/phpunit": "^10.5.45",
"symfony/console": "^6.4",
"symfony/filesystem": "^6.4",
"symfony/process": "^6.4"
},
"conflict": {
"giggsey/libphonenumber-for-php": "*"
@@ -85,14 +79,20 @@
},
"extra": {
"branch-alias": {
"dev-master": "8.x-dev"
"dev-master": "9.x-dev"
}
},
"scripts": {
"cs": "vendor/bin/php-cs-fixer fix",
"phpstan": "vendor/bin/phpstan",
"test": "vendor/bin/phpunit",
"metadata": "vendor/bin/phing compile"
"metadata": "@php build/build.php build",
"build": [
"@metadata",
"@cs",
"@test",
"@phpstan"
]
},
"config": {
"sort-packages": true,
@@ -10,11 +10,11 @@ cd "$installdir" || exit
composer require giggsey/libphonenumber-for-php-lite
cd - || exit
rm -rf lib/giggsey/libphonenumber-for-php-lite/src
cp -rf "$installdir"/vendor/giggsey/libphonenumber-for-php-lite/src lib/giggsey/libphonenumber-for-php-lite/src
cp -rf "$installdir"/vendor/giggsey/libphonenumber-for-php-lite/{composer.json,LICENSE.txt,README.md} lib/giggsey/libphonenumber-for-php-lite
rm -rf public/lib/giggsey/libphonenumber-for-php-lite/src
cp -rf "$installdir"/vendor/giggsey/libphonenumber-for-php-lite/src public/lib/giggsey/libphonenumber-for-php-lite/src
cp -rf "$installdir"/vendor/giggsey/libphonenumber-for-php-lite/{composer.json,LICENSE.txt,README.md} public/lib/giggsey/libphonenumber-for-php-lite
git add lib/giggsey/libphonenumber-for-php-lite
git add public/lib/giggsey/libphonenumber-for-php-lite
rm -rf "$installdir"
```
@@ -1,34 +1,36 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* Country code source from number
*/
class CountryCodeSource
enum CountryCodeSource: int
{
/**
* The country_code is derived based on a phone number with a leading "+", e.g. the French
* number "+33 1 42 68 53 00".
*/
public const FROM_NUMBER_WITH_PLUS_SIGN = 0;
case FROM_NUMBER_WITH_PLUS_SIGN = 0;
/**
* The country_code is derived based on a phone number with a leading IDD, e.g. the French
* number "011 33 1 42 68 53 00", as it is dialled from US.
*/
public const FROM_NUMBER_WITH_IDD = 1;
case FROM_NUMBER_WITH_IDD = 1;
/**
* The country_code is derived based on a phone number without a leading "+", e.g. the French
* number "33 1 42 68 53 00" when defaultCountry is supplied as France.
*/
public const FROM_NUMBER_WITHOUT_PLUS_SIGN = 2;
case FROM_NUMBER_WITHOUT_PLUS_SIGN = 2;
/**
* The country_code is derived NOT based on the phone number itself, but from the defaultCountry
* parameter provided in the parsing function by the clients. This happens mostly for numbers
* written in the national format (without country code). For example, this would be set when
* parsing the French number "01 42 68 53 00", when defaultCountry is supplied as France.
*/
public const FROM_DEFAULT_COUNTRY = 3;
case FROM_DEFAULT_COUNTRY = 3;
public const UNSPECIFIED = 4;
case UNSPECIFIED = 4;
}
@@ -7,15 +7,22 @@
* @internal
*/
declare(strict_types=1);
namespace libphonenumber;
/**
* @internal
*/
class CountryCodeToRegionCodeMap
{
// A mapping from a country code to the region codes which denote the
// country/region represented by that country code. In the case of multiple
// countries sharing a calling code, such as the NANPA countries, the one
// indicated with "isMainCountryForCode" in the metadata should be first.
/**
* A mapping from a country code to the region codes which denote the
* country/region represented by that country code. In the case of multiple
* countries sharing a calling code, such as the NANPA countries, the one
* indicated with "isMainCountryForCode" in the metadata should be first.
* @var array<int,string[]>
*/
public const COUNTRY_CODE_TO_REGION_CODE_MAP = [
1 => [
'US',
@@ -44,663 +51,219 @@ class CountryCodeToRegionCodeMap
'VG',
'VI',
],
7 => [
'RU',
'KZ',
],
20 => [
'EG',
],
27 => [
'ZA',
],
30 => [
'GR',
],
[
'NL',
],
[
'BE',
],
[
'FR',
],
[
'ES',
],
36 => [
'HU',
],
39 => [
'IT',
'VA',
],
[
'RO',
],
[
'CH',
],
43 => [
'AT',
],
[
'GB',
'GG',
'IM',
'JE',
],
[
'DK',
],
[
'SE',
],
[
'NO',
'SJ',
],
[
'PL',
],
[
'DE',
],
51 => [
'PE',
],
[
'MX',
],
[
'CU',
],
[
'AR',
],
[
'BR',
],
[
'CL',
],
[
'CO',
],
[
'VE',
],
60 => [
'MY',
],
[
'AU',
'CC',
'CX',
],
[
'ID',
],
[
'PH',
],
[
'NZ',
],
[
'SG',
],
[
'TH',
],
81 => [
'JP',
],
[
'KR',
],
84 => [
'VN',
],
86 => [
'CN',
],
90 => [
'TR',
],
[
'IN',
],
[
'PK',
],
[
'AF',
],
[
'LK',
],
[
'MM',
],
98 => [
'IR',
],
211 => [
'SS',
],
[
'MA',
'EH',
],
[
'DZ',
],
216 => [
'TN',
],
218 => [
'LY',
],
220 => [
'GM',
],
[
'SN',
],
[
'MR',
],
[
'ML',
],
[
'GN',
],
[
'CI',
],
[
'BF',
],
[
'NE',
],
[
'TG',
],
[
'BJ',
],
[
'MU',
],
[
'LR',
],
[
'SL',
],
[
'GH',
],
[
'NG',
],
[
'TD',
],
[
'CF',
],
[
'CM',
],
[
'CV',
],
[
'ST',
],
[
'GQ',
],
[
'GA',
],
[
'CG',
],
[
'CD',
],
[
'AO',
],
[
'GW',
],
[
'IO',
],
[
'AC',
],
[
'SC',
],
[
'SD',
],
[
'RW',
],
[
'ET',
],
[
'SO',
],
[
'DJ',
],
[
'KE',
],
[
'TZ',
],
[
'UG',
],
[
'BI',
],
[
'MZ',
],
260 => [
'ZM',
],
[
'MG',
],
[
'RE',
'YT',
],
[
'ZW',
],
[
'NA',
],
[
'MW',
],
[
'LS',
],
[
'BW',
],
[
'SZ',
],
[
'KM',
],
290 => [
'SH',
'TA',
],
[
'ER',
],
297 => [
'AW',
],
[
'FO',
],
[
'GL',
],
350 => [
'GI',
],
[
'PT',
],
[
'LU',
],
[
'IE',
],
[
'IS',
],
[
'AL',
],
[
'MT',
],
[
'CY',
],
[
'FI',
'AX',
],
[
'BG',
],
370 => [
'LT',
],
[
'LV',
],
[
'EE',
],
[
'MD',
],
[
'AM',
],
[
'BY',
],
[
'AD',
],
[
'MC',
],
[
'SM',
],
380 => [
'UA',
],
[
'RS',
],
[
'ME',
],
[
'XK',
],
385 => [
'HR',
],
[
'SI',
],
[
'BA',
],
389 => [
'MK',
],
420 => [
'CZ',
],
[
'SK',
],
423 => [
'LI',
],
500 => [
'FK',
],
[
'BZ',
],
[
'GT',
],
[
'SV',
],
[
'HN',
],
[
'NI',
],
[
'CR',
],
[
'PA',
],
[
'PM',
],
[
'HT',
],
590 => [
'GP',
'BL',
'MF',
],
[
'BO',
],
[
'GY',
],
[
'EC',
],
[
'GF',
],
[
'PY',
],
[
'MQ',
],
[
'SR',
],
[
'UY',
],
[
'CW',
'BQ',
],
670 => [
'TL',
],
672 => [
'NF',
],
[
'BN',
],
[
'NR',
],
[
'PG',
],
[
'TO',
],
[
'SB',
],
[
'VU',
],
[
'FJ',
],
[
'PW',
],
[
'WF',
],
[
'CK',
],
[
'NU',
],
685 => [
'WS',
],
[
'KI',
],
[
'NC',
],
[
'TV',
],
[
'PF',
],
[
'TK',
],
[
'FM',
],
[
'MH',
],
800 => [
'001',
],
808 => [
'001',
],
850 => [
'KP',
],
852 => [
'HK',
],
[
'MO',
],
855 => [
'KH',
],
[
'LA',
],
870 => [
'001',
],
878 => [
'001',
],
880 => [
'BD',
],
[
'001',
],
[
'001',
],
[
'001',
],
886 => [
'TW',
],
888 => [
'001',
],
960 => [
'MV',
],
[
'LB',
],
[
'JO',
],
[
'SY',
],
[
'IQ',
],
[
'KW',
],
[
'SA',
],
[
'YE',
],
[
'OM',
],
970 => [
'PS',
],
[
'AE',
],
[
'IL',
],
[
'BH',
],
[
'QA',
],
[
'BT',
],
[
'MN',
],
[
'NP',
],
979 => [
'001',
],
992 => [
'TJ',
],
[
'TM',
],
[
'AZ',
],
[
'GE',
],
[
'KG',
],
998 => [
'UZ',
],
7 => ['RU', 'KZ'],
20 => ['EG'],
27 => ['ZA'],
30 => ['GR'],
31 => ['NL'],
32 => ['BE'],
33 => ['FR'],
34 => ['ES'],
36 => ['HU'],
39 => ['IT', 'VA'],
40 => ['RO'],
41 => ['CH'],
43 => ['AT'],
44 => ['GB', 'GG', 'IM', 'JE'],
45 => ['DK'],
46 => ['SE'],
47 => ['NO', 'SJ'],
48 => ['PL'],
49 => ['DE'],
51 => ['PE'],
52 => ['MX'],
53 => ['CU'],
54 => ['AR'],
55 => ['BR'],
56 => ['CL'],
57 => ['CO'],
58 => ['VE'],
60 => ['MY'],
61 => ['AU', 'CC', 'CX'],
62 => ['ID'],
63 => ['PH'],
64 => ['NZ'],
65 => ['SG'],
66 => ['TH'],
81 => ['JP'],
82 => ['KR'],
84 => ['VN'],
86 => ['CN'],
90 => ['TR'],
91 => ['IN'],
92 => ['PK'],
93 => ['AF'],
94 => ['LK'],
95 => ['MM'],
98 => ['IR'],
211 => ['SS'],
212 => ['MA', 'EH'],
213 => ['DZ'],
216 => ['TN'],
218 => ['LY'],
220 => ['GM'],
221 => ['SN'],
222 => ['MR'],
223 => ['ML'],
224 => ['GN'],
225 => ['CI'],
226 => ['BF'],
227 => ['NE'],
228 => ['TG'],
229 => ['BJ'],
230 => ['MU'],
231 => ['LR'],
232 => ['SL'],
233 => ['GH'],
234 => ['NG'],
235 => ['TD'],
236 => ['CF'],
237 => ['CM'],
238 => ['CV'],
239 => ['ST'],
240 => ['GQ'],
241 => ['GA'],
242 => ['CG'],
243 => ['CD'],
244 => ['AO'],
245 => ['GW'],
246 => ['IO'],
247 => ['AC'],
248 => ['SC'],
249 => ['SD'],
250 => ['RW'],
251 => ['ET'],
252 => ['SO'],
253 => ['DJ'],
254 => ['KE'],
255 => ['TZ'],
256 => ['UG'],
257 => ['BI'],
258 => ['MZ'],
260 => ['ZM'],
261 => ['MG'],
262 => ['RE', 'YT'],
263 => ['ZW'],
264 => ['NA'],
265 => ['MW'],
266 => ['LS'],
267 => ['BW'],
268 => ['SZ'],
269 => ['KM'],
290 => ['SH', 'TA'],
291 => ['ER'],
297 => ['AW'],
298 => ['FO'],
299 => ['GL'],
350 => ['GI'],
351 => ['PT'],
352 => ['LU'],
353 => ['IE'],
354 => ['IS'],
355 => ['AL'],
356 => ['MT'],
357 => ['CY'],
358 => ['FI', 'AX'],
359 => ['BG'],
370 => ['LT'],
371 => ['LV'],
372 => ['EE'],
373 => ['MD'],
374 => ['AM'],
375 => ['BY'],
376 => ['AD'],
377 => ['MC'],
378 => ['SM'],
380 => ['UA'],
381 => ['RS'],
382 => ['ME'],
383 => ['XK'],
385 => ['HR'],
386 => ['SI'],
387 => ['BA'],
389 => ['MK'],
420 => ['CZ'],
421 => ['SK'],
423 => ['LI'],
500 => ['FK'],
501 => ['BZ'],
502 => ['GT'],
503 => ['SV'],
504 => ['HN'],
505 => ['NI'],
506 => ['CR'],
507 => ['PA'],
508 => ['PM'],
509 => ['HT'],
590 => ['GP', 'BL', 'MF'],
591 => ['BO'],
592 => ['GY'],
593 => ['EC'],
594 => ['GF'],
595 => ['PY'],
596 => ['MQ'],
597 => ['SR'],
598 => ['UY'],
599 => ['CW', 'BQ'],
670 => ['TL'],
672 => ['NF'],
673 => ['BN'],
674 => ['NR'],
675 => ['PG'],
676 => ['TO'],
677 => ['SB'],
678 => ['VU'],
679 => ['FJ'],
680 => ['PW'],
681 => ['WF'],
682 => ['CK'],
683 => ['NU'],
685 => ['WS'],
686 => ['KI'],
687 => ['NC'],
688 => ['TV'],
689 => ['PF'],
690 => ['TK'],
691 => ['FM'],
692 => ['MH'],
800 => ['001'],
808 => ['001'],
850 => ['KP'],
852 => ['HK'],
853 => ['MO'],
855 => ['KH'],
856 => ['LA'],
870 => ['001'],
878 => ['001'],
880 => ['BD'],
881 => ['001'],
882 => ['001'],
883 => ['001'],
886 => ['TW'],
888 => ['001'],
960 => ['MV'],
961 => ['LB'],
962 => ['JO'],
963 => ['SY'],
964 => ['IQ'],
965 => ['KW'],
966 => ['SA'],
967 => ['YE'],
968 => ['OM'],
970 => ['PS'],
971 => ['AE'],
972 => ['IL'],
973 => ['BH'],
974 => ['QA'],
975 => ['BT'],
976 => ['MN'],
977 => ['NP'],
979 => ['001'],
992 => ['TJ'],
993 => ['TM'],
994 => ['AZ'],
995 => ['GE'],
996 => ['KG'],
998 => ['UZ'],
];
}
@@ -1,13 +0,0 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
class DefaultMetadataLoader implements MetadataLoaderInterface
{
public function loadMetadata(string $metadataFileName): array
{
return include $metadataFileName;
}
}
@@ -1,16 +1,18 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* Types of phone number matches
* See detailed description beside the isNumberMatch() method
*/
class MatchType
enum MatchType: int
{
public const NOT_A_NUMBER = 0;
public const NO_MATCH = 1;
public const SHORT_NSN_MATCH = 2;
public const NSN_MATCH = 3;
public const EXACT_MATCH = 4;
case NOT_A_NUMBER = 0;
case NO_MATCH = 1;
case SHORT_NSN_MATCH = 2;
case NSN_MATCH = 3;
case EXACT_MATCH = 4;
}
@@ -7,7 +7,7 @@ namespace libphonenumber;
/**
* Matcher for various regex matching
*
* Note that this is NOT the same as Google's java PhoneNumberMatcher class.
* Note that this is NOT the same as google's java PhoneNumberMatcher class.
* This class is a minimal port of java's built-in matcher class, whereas PhoneNumberMatcher
* is designed to recognize phone numbers embedded in any text.
*
@@ -16,25 +16,22 @@ namespace libphonenumber;
class Matcher
{
protected string $pattern;
protected string $subject = '';
/**
* @var array<array{string,int}>
* @var array<int,mixed>
*/
protected array $groups = [];
private int $searchIndex = 0;
/**
*/
public function __construct(string $pattern, string $subject)
{
$this->pattern = str_replace('/', '\/', $pattern);
$this->subject = $subject;
}
/**
*/
protected function doMatch(string $type = 'find', int $offset = 0): bool
{
$final_pattern = '(?:' . $this->pattern . ')';
@@ -97,7 +94,7 @@ class Matcher
public function groupCount(): ?int
{
if (empty($this->groups)) {
if ($this->groups === []) {
return null;
}
@@ -123,8 +120,11 @@ class Matcher
return $this->groups[$group][1] + mb_strlen($this->groups[$group][0]);
}
public function start(int $group = 0): ?int
public function start(?int $group = null): mixed
{
if ($group === null) {
$group = 0;
}
if (!isset($this->groups[$group])) {
return null;
}
@@ -142,7 +142,7 @@ class Matcher
return preg_replace('/' . $this->pattern . '/x', $replacement, $this->subject);
}
public function reset(string $input = ''): self
public function reset(string $input = ''): static
{
$this->subject = $input;
@@ -1,18 +0,0 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* @interal
* @phpstan-import-type PhoneMetadataArray from PhoneMetadata
*/
interface MetadataLoaderInterface
{
/**
* @param string $metadataFileName File name (including path) of metadata to load.
* @return PhoneMetadataArray
*/
public function loadMetadata(string $metadataFileName): array;
}
@@ -8,15 +8,11 @@ interface MetadataSourceInterface
{
/**
* Gets phone metadata for a region.
* @param string $regionCode the region code.
* @return PhoneMetadata the phone metadata for that region, or null if there is none.
*/
public function getMetadataForRegion(string $regionCode): PhoneMetadata;
/**
* Gets phone metadata for a non-geographical region.
* @param int $countryCallingCode the country calling code.
* @return PhoneMetadata the phone metadata for that region, or null if there is none.
*/
public function getMetadataForNonGeographicalRegion(int $countryCallingCode): PhoneMetadata;
}
@@ -4,13 +4,13 @@ declare(strict_types=1);
namespace libphonenumber;
use RuntimeException;
/**
* @internal
*/
class MultiFileMetadataSourceImpl implements MetadataSourceInterface
{
protected static string $metaDataFilePrefix = PhoneNumberUtil::META_DATA_FILE_PREFIX;
/**
* A mapping from a region code to the PhoneMetadata for that region.
* @var PhoneMetadata[]
@@ -26,62 +26,55 @@ class MultiFileMetadataSourceImpl implements MetadataSourceInterface
protected array $countryCodeToNonGeographicalMetadataMap = [];
/**
* The prefix of the metadata files from which region data is loaded.
* @param string $currentFilePrefix The prefix of the metadata class names from which region data is loaded
*/
protected ?string $currentFilePrefix;
public function __construct(
protected readonly string $currentFilePrefix = __NAMESPACE__ . '\data\PhoneNumberMetadata_'
) {}
public function __construct(protected MetadataLoaderInterface $metadataLoader, ?string $currentFilePrefix = null)
{
if ($currentFilePrefix === null) {
$currentFilePrefix = static::$metaDataFilePrefix;
}
$this->currentFilePrefix = $currentFilePrefix;
}
/**
*
*/
public function getMetadataForRegion(string $regionCode): PhoneMetadata
{
$regionCode = strtoupper($regionCode);
if (!array_key_exists($regionCode, $this->regionToMetadataMap)) {
if (!isset($this->regionToMetadataMap[$regionCode])) {
// The regionCode here will be valid and won't be '001', so we don't need to worry about
// what to pass in for the country calling code.
$this->loadMetadataFromFile($this->currentFilePrefix, $regionCode, 0, $this->metadataLoader);
$this->loadMetadataFromFile($this->currentFilePrefix, $regionCode, 0);
}
return $this->regionToMetadataMap[$regionCode];
}
/**
*
*/
public function getMetadataForNonGeographicalRegion(int $countryCallingCode): PhoneMetadata
{
if (!array_key_exists($countryCallingCode, $this->countryCodeToNonGeographicalMetadataMap)) {
$this->loadMetadataFromFile($this->currentFilePrefix, PhoneNumberUtil::REGION_CODE_FOR_NON_GEO_ENTITY, $countryCallingCode, $this->metadataLoader);
if (!isset($this->countryCodeToNonGeographicalMetadataMap[$countryCallingCode])) {
$this->loadMetadataFromFile($this->currentFilePrefix, PhoneNumberUtil::REGION_CODE_FOR_NON_GEO_ENTITY, $countryCallingCode);
}
return $this->countryCodeToNonGeographicalMetadataMap[$countryCallingCode];
}
/**
* @throws RuntimeException
*/
public function loadMetadataFromFile(string $filePrefix, string $regionCode, int $countryCallingCode, MetadataLoaderInterface $metadataLoader): void
public function loadMetadataFromFile(string $filePrefix, string $regionCode, int $countryCallingCode): void
{
$regionCode = strtoupper($regionCode);
$isNonGeoRegion = PhoneNumberUtil::REGION_CODE_FOR_NON_GEO_ENTITY === $regionCode;
$fileName = $filePrefix . '_' . ($isNonGeoRegion ? $countryCallingCode : $regionCode) . '.php';
if (!is_readable($fileName)) {
throw new \RuntimeException('missing metadata: ' . $fileName);
$class = $filePrefix . ($isNonGeoRegion ? $countryCallingCode : ucfirst($regionCode));
if (!class_exists($class)) {
throw new RuntimeException('missing metadata: ' . $class);
}
$metadata = new $class();
if (!$metadata instanceof PhoneMetadata) {
throw new RuntimeException('invalid metadata: ' . $class);
}
$data = $metadataLoader->loadMetadata($fileName);
$metadata = new PhoneMetadata();
$metadata->fromArray($data);
if ($isNonGeoRegion) {
$this->countryCodeToNonGeographicalMetadataMap[$countryCallingCode] = $metadata;
} else {
@@ -6,17 +6,16 @@ namespace libphonenumber;
/**
* Number Format
* @interal
* @phpstan-type NumberFormatArray array{pattern:string|null,format:string|null,leadingDigitsPatterns:array<string>,nationalPrefixFormattingRule?:string,domesticCarrierCodeFormattingRule?:string,nationalPrefixOptionalWhenFormatting?:bool}
* @internal
*/
class NumberFormat
{
protected ?string $pattern;
protected string $pattern = '';
protected bool $hasPattern = false;
protected ?string $format;
protected string $format = '';
protected bool $hasFormat = false;
/**
* @var array<string>
* @var array<int,string>
*/
protected array $leadingDigitsPattern = [];
protected string $nationalPrefixFormattingRule = '';
@@ -26,46 +25,17 @@ class NumberFormat
protected string $domesticCarrierCodeFormattingRule = '';
protected bool $hasDomesticCarrierCodeFormattingRule = false;
public function __construct()
{
$this->clear();
}
/**
*/
public function clear(): NumberFormat
{
$this->hasPattern = false;
$this->pattern = null;
$this->hasFormat = false;
$this->format = null;
$this->leadingDigitsPattern = [];
$this->hasNationalPrefixFormattingRule = false;
$this->nationalPrefixFormattingRule = '';
$this->hasNationalPrefixOptionalWhenFormatting = false;
$this->nationalPrefixOptionalWhenFormatting = false;
$this->hasDomesticCarrierCodeFormattingRule = false;
$this->domesticCarrierCodeFormattingRule = '';
return $this;
}
public function hasPattern(): bool
{
return $this->hasPattern;
}
public function getPattern(): ?string
public function getPattern(): string
{
return $this->pattern;
}
public function setPattern(string $value): NumberFormat
public function setPattern(string $value): static
{
$this->hasPattern = true;
$this->pattern = $value;
@@ -83,10 +53,12 @@ class NumberFormat
return $this->nationalPrefixOptionalWhenFormatting;
}
public function setNationalPrefixOptionalWhenFormatting(bool $nationalPrefixOptionalWhenFormatting): void
public function setNationalPrefixOptionalWhenFormatting(bool $nationalPrefixOptionalWhenFormatting): static
{
$this->hasNationalPrefixOptionalWhenFormatting = true;
$this->nationalPrefixOptionalWhenFormatting = $nationalPrefixOptionalWhenFormatting;
return $this;
}
public function hasFormat(): bool
@@ -94,12 +66,12 @@ class NumberFormat
return $this->hasFormat;
}
public function getFormat(): ?string
public function getFormat(): string
{
return $this->format;
}
public function setFormat(string $value): NumberFormat
public function setFormat(string $value): static
{
$this->hasFormat = true;
$this->format = $value;
@@ -108,7 +80,7 @@ class NumberFormat
}
/**
* @return string[]
* @return array<int,string>
*/
public function leadingDigitPatterns(): array
{
@@ -125,7 +97,16 @@ class NumberFormat
return $this->leadingDigitsPattern[$index];
}
public function addLeadingDigitsPattern(string $value): NumberFormat
/**
* @param array<int,string> $patterns
*/
public function setLeadingDigitsPattern(array $patterns): static
{
$this->leadingDigitsPattern = $patterns;
return $this;
}
public function addLeadingDigitsPattern(string $value): static
{
$this->leadingDigitsPattern[] = $value;
@@ -142,7 +123,7 @@ class NumberFormat
return $this->nationalPrefixFormattingRule;
}
public function setNationalPrefixFormattingRule(string $value): NumberFormat
public function setNationalPrefixFormattingRule(string $value): static
{
$this->hasNationalPrefixFormattingRule = true;
$this->nationalPrefixFormattingRule = $value;
@@ -150,7 +131,7 @@ class NumberFormat
return $this;
}
public function clearNationalPrefixFormattingRule(): NumberFormat
public function clearNationalPrefixFormattingRule(): static
{
$this->nationalPrefixFormattingRule = '';
@@ -167,7 +148,7 @@ class NumberFormat
return $this->domesticCarrierCodeFormattingRule;
}
public function setDomesticCarrierCodeFormattingRule(string $value): NumberFormat
public function setDomesticCarrierCodeFormattingRule(string $value): static
{
$this->hasDomesticCarrierCodeFormattingRule = true;
$this->domesticCarrierCodeFormattingRule = $value;
@@ -175,7 +156,7 @@ class NumberFormat
return $this;
}
public function mergeFrom(NumberFormat $other): NumberFormat
public function mergeFrom(NumberFormat $other): static
{
if ($other->hasPattern()) {
$this->setPattern($other->getPattern());
@@ -199,55 +180,4 @@ class NumberFormat
return $this;
}
/**
* @internal
* @return NumberFormatArray
*/
public function toArray(): array
{
$output = [];
$output['pattern'] = $this->getPattern();
$output['format'] = $this->getFormat();
$output['leadingDigitsPatterns'] = $this->leadingDigitPatterns();
if ($this->hasNationalPrefixFormattingRule()) {
$output['nationalPrefixFormattingRule'] = $this->getNationalPrefixFormattingRule();
}
if ($this->hasDomesticCarrierCodeFormattingRule()) {
$output['domesticCarrierCodeFormattingRule'] = $this->getDomesticCarrierCodeFormattingRule();
}
if ($this->hasNationalPrefixOptionalWhenFormatting() && $this->getNationalPrefixOptionalWhenFormatting() !== false) {
$output['nationalPrefixOptionalWhenFormatting'] = $this->getNationalPrefixOptionalWhenFormatting();
}
return $output;
}
/**
* @internal
* @param NumberFormatArray $input
*/
public function fromArray(array $input): void
{
$this->setPattern($input['pattern']);
$this->setFormat($input['format']);
foreach ($input['leadingDigitsPatterns'] as $leadingDigitsPattern) {
$this->addLeadingDigitsPattern($leadingDigitsPattern);
}
if (isset($input['nationalPrefixFormattingRule']) && $input['nationalPrefixFormattingRule'] !== '') {
$this->setNationalPrefixFormattingRule($input['nationalPrefixFormattingRule']);
}
if (isset($input['domesticCarrierCodeFormattingRule']) && $input['domesticCarrierCodeFormattingRule'] !== '') {
$this->setDomesticCarrierCodeFormattingRule($input['domesticCarrierCodeFormattingRule']);
}
if (isset($input['nationalPrefixOptionalWhenFormatting'])) {
$this->setNationalPrefixOptionalWhenFormatting($input['nationalPrefixOptionalWhenFormatting']);
}
}
}
@@ -4,10 +4,14 @@ declare(strict_types=1);
namespace libphonenumber;
use Exception;
use Stringable;
use Throwable;
/**
* Generic exception class for errors encountered when parsing phone numbers.
*/
class NumberParseException extends \Exception implements \Stringable
class NumberParseException extends Exception implements Stringable
{
/**
* The country code supplied did not belong to a supported country or non-geographical entity.
@@ -38,7 +42,7 @@ class NumberParseException extends \Exception implements \Stringable
protected int $errorType;
public function __construct(int $errorType, string $message, ?\Throwable $previous = null)
public function __construct(int $errorType, string $message, ?Throwable $previous = null)
{
parent::__construct($message, $errorType, $previous);
$this->message = $message;
@@ -4,24 +4,35 @@ declare(strict_types=1);
namespace libphonenumber;
use function count;
/**
* Class PhoneMetadata
* @package libphonenumber
* @internal Used internally, and can change at any time
* @phpstan-import-type PhoneNumberDescArray from PhoneNumberDesc
* @phpstan-import-type NumberFormatArray from NumberFormat
* @phpstan-type PhoneMetadataArray array{generalDesc?:PhoneNumberDescArray,fixedLine?:PhoneNumberDescArray,mobile?:PhoneNumberDescArray,tollFree?:PhoneNumberDescArray,premiumRate?:PhoneNumberDescArray,sharedCost?:PhoneNumberDescArray,personalNumber?:PhoneNumberDescArray,voip?:PhoneNumberDescArray,pager?:PhoneNumberDescArray,uan?:PhoneNumberDescArray,emergency?:PhoneNumberDescArray,voicemail?:PhoneNumberDescArray,shortCode?:PhoneNumberDescArray,standardRate?:PhoneNumberDescArray,carrierSpecific?:PhoneNumberDescArray,smsServices?:PhoneNumberDescArray,noInternationalDialling?:PhoneNumberDescArray,id:string|null,countryCode?:int,internationalPrefix?:string,preferredInternationalPrefix?:string,nationalPrefix?:string,preferredExtnPrefix?:string,nationalPrefixForParsing?:string,nationalPrefixTransformRule?:string,sameMobileAndFixedLinePattern?:bool,numberFormat:NumberFormatArray[],intlNumberFormat?:NumberFormatArray[],mainCountryForCode?:bool,leadingDigits?:string,mobileNumberPortableRegion?:bool}
*/
class PhoneMetadata
{
protected ?string $id = null;
protected ?int $countryCode = null;
protected string $leadingDigits;
protected string $internationalPrefix;
protected ?string $preferredInternationalPrefix = null;
/**
* @var string|null
*/
protected const ID = null;
/**
* @var int|null
*/
protected const COUNTRY_CODE = null;
/**
* @var string|null
*/
protected const LEADING_DIGITS = null;
/**
* @var string|null
*/
protected const NATIONAL_PREFIX = null;
protected ?string $nationalPrefixForParsing = null;
protected ?string $internationalPrefix = null;
protected ?string $preferredInternationalPrefix = null;
protected ?string $nationalPrefixTransformRule = null;
protected ?string $nationalPrefix = null;
protected ?string $preferredExtnPrefix = null;
protected bool $mainCountryForCode = false;
protected bool $mobileNumberPortableRegion = false;
@@ -52,16 +63,6 @@ class PhoneMetadata
*/
protected array $intlNumberFormat = [];
public function hasId(): bool
{
return isset($this->id);
}
public function hasMainCountryForCode(): bool
{
return isset($this->mainCountryForCode);
}
public function isMainCountryForCode(): bool
{
return $this->mainCountryForCode;
@@ -72,25 +73,11 @@ class PhoneMetadata
return $this->mainCountryForCode;
}
public function setMainCountryForCode(bool $value): PhoneMetadata
{
$this->mainCountryForCode = $value;
return $this;
}
public function clearMainCountryForCode(): PhoneMetadata
{
$this->mainCountryForCode = false;
return $this;
}
public function numberFormatSize(): int
{
return \count($this->numberFormat);
return count($this->numberFormat);
}
/**
*/
public function getNumberFormat(int $index): NumberFormat
{
return $this->numberFormat[$index];
@@ -98,7 +85,7 @@ class PhoneMetadata
public function intlNumberFormatSize(): int
{
return \count($this->intlNumberFormat);
return count($this->intlNumberFormat);
}
public function getIntlNumberFormat(int $index): NumberFormat
@@ -106,152 +93,9 @@ class PhoneMetadata
return $this->intlNumberFormat[$index];
}
public function clearIntlNumberFormat(): PhoneMetadata
{
$this->intlNumberFormat = [];
return $this;
}
/**
* @internal
* @return PhoneMetadataArray
*/
public function toArray(): array
{
$output = [];
$output['id'] = $this->getId();
if ($this->hasCountryCode()) {
$output['countryCode'] = $this->getCountryCode();
}
if ($this->hasGeneralDesc()) {
$output['generalDesc'] = $this->getGeneralDesc()->toArray();
}
if ($this->hasFixedLine()) {
$output['fixedLine'] = $this->getFixedLine()->toArray();
}
if ($this->hasMobile()) {
$output['mobile'] = $this->getMobile()->toArray();
}
if ($this->hasTollFree()) {
$output['tollFree'] = $this->getTollFree()->toArray();
}
if ($this->hasPremiumRate()) {
$output['premiumRate'] = $this->getPremiumRate()->toArray();
}
if ($this->hasSharedCost()) {
$output['sharedCost'] = $this->getSharedCost()->toArray();
}
if ($this->hasPersonalNumber()) {
$output['personalNumber'] = $this->getPersonalNumber()->toArray();
}
if ($this->hasVoip()) {
$output['voip'] = $this->getVoip()->toArray();
}
if ($this->hasPager()) {
$output['pager'] = $this->getPager()->toArray();
}
if ($this->hasUan()) {
$output['uan'] = $this->getUan()->toArray();
}
if ($this->hasEmergency()) {
$output['emergency'] = $this->getEmergency()->toArray();
}
if ($this->hasVoicemail()) {
$output['voicemail'] = $this->getVoicemail()->toArray();
}
if ($this->hasShortCode()) {
$output['shortCode'] = $this->getShortCode()->toArray();
}
if ($this->hasStandardRate()) {
$output['standardRate'] = $this->getStandardRate()->toArray();
}
if ($this->hasCarrierSpecific()) {
$output['carrierSpecific'] = $this->getCarrierSpecific()->toArray();
}
if ($this->hasSmsServices()) {
$output['smsServices'] = $this->getSmsServices()->toArray();
}
if ($this->hasNoInternationalDialling()) {
$output['noInternationalDialling'] = $this->getNoInternationalDialling()->toArray();
}
if ($this->hasInternationalPrefix()) {
$output['internationalPrefix'] = $this->getInternationalPrefix();
}
if ($this->hasPreferredInternationalPrefix()) {
$output['preferredInternationalPrefix'] = $this->getPreferredInternationalPrefix();
}
if ($this->hasNationalPrefix()) {
$output['nationalPrefix'] = $this->getNationalPrefix();
}
if ($this->hasPreferredExtnPrefix()) {
$output['preferredExtnPrefix'] = $this->getPreferredExtnPrefix();
}
if ($this->hasNationalPrefixForParsing()) {
$output['nationalPrefixForParsing'] = $this->getNationalPrefixForParsing();
}
if ($this->hasNationalPrefixTransformRule()) {
$output['nationalPrefixTransformRule'] = $this->getNationalPrefixTransformRule();
}
if ($this->hasSameMobileAndFixedLinePattern() && $this->getSameMobileAndFixedLinePattern() !== false) {
$output['sameMobileAndFixedLinePattern'] = $this->getSameMobileAndFixedLinePattern();
}
$output['numberFormat'] = [];
foreach ($this->numberFormats() as $numberFormat) {
$output['numberFormat'][] = $numberFormat->toArray();
}
if (!empty($this->intlNumberFormats())) {
$output['intlNumberFormat'] = [];
foreach ($this->intlNumberFormats() as $intlNumberFormat) {
$output['intlNumberFormat'][] = $intlNumberFormat->toArray();
}
}
if ($this->getMainCountryForCode() !== false) {
$output['mainCountryForCode'] = $this->getMainCountryForCode();
}
if ($this->hasLeadingDigits()) {
$output['leadingDigits'] = $this->getLeadingDigits();
}
if ($this->hasMobileNumberPortableRegion() && $this->isMobileNumberPortableRegion() !== false) {
$output['mobileNumberPortableRegion'] = $this->isMobileNumberPortableRegion();
}
return $output;
}
public function hasGeneralDesc(): bool
{
return isset($this->generalDesc);
return $this->generalDesc !== null;
}
public function getGeneralDesc(): ?PhoneNumberDesc
@@ -259,15 +103,9 @@ class PhoneMetadata
return $this->generalDesc;
}
public function setGeneralDesc(PhoneNumberDesc $value): PhoneMetadata
{
$this->generalDesc = $value;
return $this;
}
public function hasFixedLine(): bool
{
return isset($this->fixedLine);
return $this->fixedLine !== null;
}
public function getFixedLine(): ?PhoneNumberDesc
@@ -275,15 +113,9 @@ class PhoneMetadata
return $this->fixedLine;
}
public function setFixedLine(PhoneNumberDesc $value): PhoneMetadata
{
$this->fixedLine = $value;
return $this;
}
public function hasMobile(): bool
{
return isset($this->mobile);
return $this->mobile !== null;
}
public function getMobile(): ?PhoneNumberDesc
@@ -291,127 +123,44 @@ class PhoneMetadata
return $this->mobile;
}
public function setMobile(PhoneNumberDesc $value): PhoneMetadata
{
$this->mobile = $value;
return $this;
}
public function hasTollFree(): bool
{
return isset($this->tollFree);
}
public function getTollFree(): ?PhoneNumberDesc
{
return $this->tollFree;
}
public function setTollFree(PhoneNumberDesc $value): PhoneMetadata
{
$this->tollFree = $value;
return $this;
}
public function hasPremiumRate(): bool
{
return isset($this->premiumRate);
}
public function getPremiumRate(): ?PhoneNumberDesc
{
return $this->premiumRate;
}
public function setPremiumRate(PhoneNumberDesc $value): PhoneMetadata
{
$this->premiumRate = $value;
return $this;
}
public function hasSharedCost(): bool
{
return isset($this->sharedCost);
}
public function getSharedCost(): ?PhoneNumberDesc
{
return $this->sharedCost;
}
public function setSharedCost(PhoneNumberDesc $value): PhoneMetadata
{
$this->sharedCost = $value;
return $this;
}
public function hasPersonalNumber(): bool
{
return isset($this->personalNumber);
}
public function getPersonalNumber(): ?PhoneNumberDesc
{
return $this->personalNumber;
}
public function setPersonalNumber(PhoneNumberDesc $value): PhoneMetadata
{
$this->personalNumber = $value;
return $this;
}
public function hasVoip(): bool
{
return isset($this->voip);
}
public function getVoip(): ?PhoneNumberDesc
{
return $this->voip;
}
public function setVoip(PhoneNumberDesc $value): PhoneMetadata
{
$this->voip = $value;
return $this;
}
public function hasPager(): bool
{
return isset($this->pager);
}
public function getPager(): ?PhoneNumberDesc
{
return $this->pager;
}
public function setPager(PhoneNumberDesc $value): PhoneMetadata
{
$this->pager = $value;
return $this;
}
public function hasUan(): bool
{
return isset($this->uan);
}
public function getUan(): ?PhoneNumberDesc
{
return $this->uan;
}
public function setUan(PhoneNumberDesc $value): PhoneMetadata
{
$this->uan = $value;
return $this;
}
public function hasEmergency(): bool
{
return isset($this->emergency);
return $this->emergency !== null;
}
public function getEmergency(): ?PhoneNumberDesc
@@ -419,156 +168,57 @@ class PhoneMetadata
return $this->emergency;
}
public function setEmergency(PhoneNumberDesc $value): PhoneMetadata
{
$this->emergency = $value;
return $this;
}
public function hasVoicemail(): bool
{
return isset($this->voicemail);
}
public function getVoicemail(): ?PhoneNumberDesc
{
return $this->voicemail;
}
public function setVoicemail(PhoneNumberDesc $value): PhoneMetadata
{
$this->voicemail = $value;
return $this;
}
public function hasShortCode(): bool
{
return isset($this->short_code);
}
public function getShortCode(): ?PhoneNumberDesc
{
return $this->short_code;
}
public function setShortCode(PhoneNumberDesc $value): PhoneMetadata
{
$this->short_code = $value;
return $this;
}
public function hasStandardRate(): bool
{
return isset($this->standard_rate);
}
public function getStandardRate(): ?PhoneNumberDesc
{
return $this->standard_rate;
}
public function setStandardRate(PhoneNumberDesc $value): PhoneMetadata
{
$this->standard_rate = $value;
return $this;
}
public function hasCarrierSpecific(): bool
{
return isset($this->carrierSpecific);
}
public function getCarrierSpecific(): ?PhoneNumberDesc
{
return $this->carrierSpecific;
}
public function setCarrierSpecific(PhoneNumberDesc $value): PhoneMetadata
{
$this->carrierSpecific = $value;
return $this;
}
public function hasSmsServices(): bool
{
return isset($this->smsServices);
}
public function getSmsServices(): ?PhoneNumberDesc
{
return $this->smsServices;
}
public function setSmsServices(PhoneNumberDesc $value): PhoneMetadata
{
$this->smsServices = $value;
return $this;
}
public function hasNoInternationalDialling(): bool
{
return isset($this->noInternationalDialling);
}
public function getNoInternationalDialling(): ?PhoneNumberDesc
{
return $this->noInternationalDialling;
}
public function setNoInternationalDialling(PhoneNumberDesc $value): PhoneMetadata
{
$this->noInternationalDialling = $value;
return $this;
}
public function getId(): ?string
{
return $this->id;
}
public function setId(string $value): PhoneMetadata
{
$this->id = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getCountryCode() */
public function hasCountryCode(): bool
{
return isset($this->countryCode);
return static::ID;
}
public function getCountryCode(): ?int
{
return $this->countryCode;
return static::COUNTRY_CODE;
}
public function setCountryCode(int $value): PhoneMetadata
{
$this->countryCode = $value;
return $this;
}
public function hasInternationalPrefix(): bool
{
return isset($this->internationalPrefix);
}
public function getInternationalPrefix(): string
public function getInternationalPrefix(): ?string
{
return $this->internationalPrefix;
}
public function setInternationalPrefix(string $value): PhoneMetadata
{
$this->internationalPrefix = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getPreferredInternationalPrefix() */
public function hasPreferredInternationalPrefix(): bool
{
return isset($this->preferredInternationalPrefix);
return ($this->preferredInternationalPrefix !== null);
}
public function getPreferredInternationalPrefix(): ?string
@@ -576,33 +226,19 @@ class PhoneMetadata
return $this->preferredInternationalPrefix;
}
public function setPreferredInternationalPrefix(string $value): PhoneMetadata
{
$this->preferredInternationalPrefix = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getNationalPrefix() */
public function hasNationalPrefix(): bool
{
return isset($this->nationalPrefix);
return static::NATIONAL_PREFIX !== null;
}
public function getNationalPrefix(): ?string
{
return $this->nationalPrefix;
return static::NATIONAL_PREFIX;
}
public function setNationalPrefix(string $value): PhoneMetadata
{
$this->nationalPrefix = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getPreferredExtnPrefix() */
public function hasPreferredExtnPrefix(): bool
{
return isset($this->preferredExtnPrefix);
return $this->preferredExtnPrefix !== null;
}
public function getPreferredExtnPrefix(): ?string
@@ -610,16 +246,9 @@ class PhoneMetadata
return $this->preferredExtnPrefix;
}
public function setPreferredExtnPrefix(string $value): PhoneMetadata
{
$this->preferredExtnPrefix = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getNationalPrefixForParsing() */
public function hasNationalPrefixForParsing(): bool
{
return isset($this->nationalPrefixForParsing);
return $this->nationalPrefixForParsing !== null;
}
public function getNationalPrefixForParsing(): ?string
@@ -627,45 +256,16 @@ class PhoneMetadata
return $this->nationalPrefixForParsing;
}
public function setNationalPrefixForParsing(string $value): PhoneMetadata
{
$this->nationalPrefixForParsing = $value;
return $this;
}
/** @phpstan-assert-if-true !null $this->getNationalPrefixTransformRule() */
public function hasNationalPrefixTransformRule(): bool
{
return isset($this->nationalPrefixTransformRule);
}
public function getNationalPrefixTransformRule(): ?string
{
return $this->nationalPrefixTransformRule;
}
public function setNationalPrefixTransformRule(string $value): PhoneMetadata
{
$this->nationalPrefixTransformRule = $value;
return $this;
}
public function hasSameMobileAndFixedLinePattern(): bool
{
return isset($this->sameMobileAndFixedLinePattern);
}
public function getSameMobileAndFixedLinePattern(): bool
{
return $this->sameMobileAndFixedLinePattern;
}
public function setSameMobileAndFixedLinePattern(bool $value): PhoneMetadata
{
$this->sameMobileAndFixedLinePattern = $value;
return $this;
}
/**
* @return NumberFormat[]
*/
@@ -684,23 +284,12 @@ class PhoneMetadata
public function hasLeadingDigits(): bool
{
return isset($this->leadingDigits);
return static::LEADING_DIGITS !== null;
}
public function getLeadingDigits(): string
public function getLeadingDigits(): ?string
{
return $this->leadingDigits;
}
public function setLeadingDigits(string $value): PhoneMetadata
{
$this->leadingDigits = $value;
return $this;
}
public function hasMobileNumberPortableRegion(): bool
{
return isset($this->mobileNumberPortableRegion);
return static::LEADING_DIGITS;
}
public function isMobileNumberPortableRegion(): bool
@@ -708,205 +297,9 @@ class PhoneMetadata
return $this->mobileNumberPortableRegion;
}
public function setMobileNumberPortableRegion(bool $value): PhoneMetadata
public function setInternationalPrefix(string $value): static
{
$this->mobileNumberPortableRegion = $value;
return $this;
}
public function clearPreferredInternationalPrefix(): PhoneMetadata
{
unset($this->preferredInternationalPrefix);
return $this;
}
public function clearNationalPrefix(): PhoneMetadata
{
unset($this->nationalPrefix);
return $this;
}
public function clearPreferredExtnPrefix(): PhoneMetadata
{
unset($this->preferredExtnPrefix);
return $this;
}
public function clearNationalPrefixTransformRule(): PhoneMetadata
{
unset($this->nationalPrefixTransformRule);
return $this;
}
public function clearSameMobileAndFixedLinePattern(): PhoneMetadata
{
$this->sameMobileAndFixedLinePattern = false;
return $this;
}
public function clearMobileNumberPortableRegion(): PhoneMetadata
{
$this->mobileNumberPortableRegion = false;
return $this;
}
/**
* @interal
* @param PhoneMetadataArray $input
*/
public function fromArray(array $input): PhoneMetadata
{
if (isset($input['generalDesc'])) {
$desc = new PhoneNumberDesc();
$this->setGeneralDesc($desc->fromArray($input['generalDesc']));
}
if (isset($input['fixedLine'])) {
$desc = new PhoneNumberDesc();
$this->setFixedLine($desc->fromArray($input['fixedLine']));
}
if (isset($input['mobile'])) {
$desc = new PhoneNumberDesc();
$this->setMobile($desc->fromArray($input['mobile']));
}
if (isset($input['tollFree'])) {
$desc = new PhoneNumberDesc();
$this->setTollFree($desc->fromArray($input['tollFree']));
}
if (isset($input['premiumRate'])) {
$desc = new PhoneNumberDesc();
$this->setPremiumRate($desc->fromArray($input['premiumRate']));
}
if (isset($input['sharedCost'])) {
$desc = new PhoneNumberDesc();
$this->setSharedCost($desc->fromArray($input['sharedCost']));
}
if (isset($input['personalNumber'])) {
$desc = new PhoneNumberDesc();
$this->setPersonalNumber($desc->fromArray($input['personalNumber']));
}
if (isset($input['voip'])) {
$desc = new PhoneNumberDesc();
$this->setVoip($desc->fromArray($input['voip']));
}
if (isset($input['pager'])) {
$desc = new PhoneNumberDesc();
$this->setPager($desc->fromArray($input['pager']));
}
if (isset($input['uan'])) {
$desc = new PhoneNumberDesc();
$this->setUan($desc->fromArray($input['uan']));
}
if (isset($input['emergency'])) {
$desc = new PhoneNumberDesc();
$this->setEmergency($desc->fromArray($input['emergency']));
}
if (isset($input['voicemail'])) {
$desc = new PhoneNumberDesc();
$this->setVoicemail($desc->fromArray($input['voicemail']));
}
if (isset($input['shortCode'])) {
$desc = new PhoneNumberDesc();
$this->setShortCode($desc->fromArray($input['shortCode']));
}
if (isset($input['standardRate'])) {
$desc = new PhoneNumberDesc();
$this->setStandardRate($desc->fromArray($input['standardRate']));
}
if (isset($input['carrierSpecific'])) {
$desc = new PhoneNumberDesc();
$this->setCarrierSpecific($desc->fromArray($input['carrierSpecific']));
}
if (isset($input['smsServices'])) {
$desc = new PhoneNumberDesc();
$this->setSmsServices($desc->fromArray($input['smsServices']));
}
if (isset($input['noInternationalDialling'])) {
$desc = new PhoneNumberDesc();
$this->setNoInternationalDialling($desc->fromArray($input['noInternationalDialling']));
}
$this->setId($input['id']);
if (isset($input['countryCode'])) {
$this->setCountryCode($input['countryCode']);
}
if (isset($input['internationalPrefix'])) {
$this->setInternationalPrefix($input['internationalPrefix']);
}
if (isset($input['preferredInternationalPrefix'])) {
$this->setPreferredInternationalPrefix($input['preferredInternationalPrefix']);
}
if (isset($input['nationalPrefix'])) {
$this->setNationalPrefix($input['nationalPrefix']);
}
if (isset($input['preferredExtnPrefix'])) {
$this->setPreferredExtnPrefix($input['preferredExtnPrefix']);
}
if (isset($input['nationalPrefixForParsing'])) {
$this->setNationalPrefixForParsing($input['nationalPrefixForParsing']);
}
if (isset($input['nationalPrefixTransformRule'])) {
$this->setNationalPrefixTransformRule($input['nationalPrefixTransformRule']);
}
foreach ($input['numberFormat'] ?? [] as $numberFormatElt) {
$numberFormat = new NumberFormat();
$numberFormat->fromArray($numberFormatElt);
$this->addNumberFormat($numberFormat);
}
foreach ($input['intlNumberFormat'] ?? [] as $intlNumberFormatElt) {
$numberFormat = new NumberFormat();
$numberFormat->fromArray($intlNumberFormatElt);
$this->addIntlNumberFormat($numberFormat);
}
if (isset($input['mainCountryForCode'])) {
$this->setMainCountryForCode($input['mainCountryForCode']);
}
if (isset($input['leadingDigits'])) {
$this->setLeadingDigits($input['leadingDigits']);
}
if (isset($input['mobileNumberPortableRegion'])) {
$this->setMobileNumberPortableRegion($input['mobileNumberPortableRegion']);
}
return $this;
}
public function addNumberFormat(NumberFormat $value): PhoneMetadata
{
$this->numberFormat[] = $value;
return $this;
}
public function addIntlNumberFormat(NumberFormat $value): PhoneMetadata
{
$this->intlNumberFormat[] = $value;
$this->internationalPrefix = $value;
return $this;
}
}
@@ -4,13 +4,20 @@ declare(strict_types=1);
namespace libphonenumber;
class PhoneNumber implements \Serializable, \Stringable
use Serializable;
/**
* It is not recommended to create PhoneNumber objects directly, instead you should
* use PhoneNumberUtil::parse() to parse the number and return a PhoneNumber object
* @no-named-arguments
*/
class PhoneNumber implements Serializable
{
/**
* The country calling code for this number, as defined by the International Telecommunication Union
* (ITU). For example, this would be 1 for NANPA countries, and 33 for France.
*/
protected int $countryCode = 0;
protected ?int $countryCode = null;
/**
* National (significant) Number is defined in International Telecommunication Union (ITU)
* Recommendation E.164. It is a language/country-neutral representation of a phone number at a
@@ -53,12 +60,8 @@ class PhoneNumber implements \Serializable, \Stringable
/**
* The source from which the country_code is derived. This is not set in the general parsing method,
* but in the method that parses and keeps raw_input. New fields could be added upon request.
*
* @see CountryCodeSource
*
* This must be one of the CountryCodeSource constants.
*/
protected int $countryCodeSource = CountryCodeSource::UNSPECIFIED;
protected ?CountryCodeSource $countryCodeSource = CountryCodeSource::UNSPECIFIED;
/**
* The carrier selection code that is preferred when calling this phone number domestically. This
* also includes codes that need to be dialed in some countries when calling from landlines to
@@ -76,16 +79,8 @@ class PhoneNumber implements \Serializable, \Stringable
* The number of leading zeros of this phone number.
*/
protected int $numberOfLeadingZeros = 1;
private bool $hasCountryCode = false;
/**
* Clears this phone number.
*
* This effectively resets this phone number to the state of a new instance.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clear(): PhoneNumber
public function clear(): static
{
$this->clearCountryCode();
$this->clearNationalNumber();
@@ -98,91 +93,50 @@ class PhoneNumber implements \Serializable, \Stringable
return $this;
}
/**
* Clears the country code of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearCountryCode(): PhoneNumber
public function clearCountryCode(): static
{
$this->countryCode = 0;
$this->hasCountryCode = false;
$this->countryCode = null;
return $this;
}
/**
* Clears the national number of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearNationalNumber(): PhoneNumber
public function clearNationalNumber(): static
{
$this->nationalNumber = null;
return $this;
}
/**
* Clears the extension of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearExtension(): PhoneNumber
public function clearExtension(): static
{
$this->extension = null;
return $this;
}
/**
* Clears the italian leading zero information of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearItalianLeadingZero(): PhoneNumber
public function clearItalianLeadingZero(): static
{
$this->italianLeadingZero = null;
return $this;
}
/**
* Clears the number of leading zeros of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearNumberOfLeadingZeros(): PhoneNumber
public function clearNumberOfLeadingZeros(): static
{
$this->hasNumberOfLeadingZeros = false;
$this->numberOfLeadingZeros = 1;
return $this;
}
/**
* Clears the raw input of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearRawInput(): PhoneNumber
public function clearRawInput(): static
{
$this->rawInput = null;
return $this;
}
/**
* Clears the country code source of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearCountryCodeSource(): PhoneNumber
public function clearCountryCodeSource(): static
{
$this->countryCodeSource = CountryCodeSource::UNSPECIFIED;
return $this;
}
/**
* Clears the preferred domestic carrier code of this phone number.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function clearPreferredDomesticCarrierCode(): PhoneNumber
public function clearPreferredDomesticCarrierCode(): static
{
$this->preferredDomesticCarrierCode = null;
return $this;
@@ -190,12 +144,8 @@ class PhoneNumber implements \Serializable, \Stringable
/**
* Merges the information from another phone number into this phone number.
*
* @param PhoneNumber $other The phone number to copy.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function mergeFrom(PhoneNumber $other): PhoneNumber
public function mergeFrom(PhoneNumber $other): static
{
if ($other->hasCountryCode()) {
$this->setCountryCode($other->getCountryCode());
@@ -224,114 +174,60 @@ class PhoneNumber implements \Serializable, \Stringable
return $this;
}
/**
* Returns whether this phone number has a country code set.
*
* @return bool True if a country code is set, false otherwise.
*/
public function hasCountryCode(): bool
{
return $this->hasCountryCode;
return $this->countryCode !== null;
}
public function getCountryCode(): int
public function getCountryCode(): ?int
{
return $this->countryCode;
}
/**
* Sets the country code of this phone number.
*
* @param int $value The country code.
*
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setCountryCode(int $value): PhoneNumber
public function setCountryCode(int $value): static
{
$this->hasCountryCode = true;
$this->countryCode = $value;
return $this;
}
/**
* Returns whether this phone number has a national number set.
*
* @return bool True if a national number is set, false otherwise.
*/
public function hasNationalNumber(): bool
{
return $this->nationalNumber !== null;
}
/**
* Returns the national number of this phone number.
*
* @return string|null The national number, or null if not set.
*/
public function getNationalNumber(): ?string
{
return $this->nationalNumber;
}
/**
* Sets the national number of this phone number.
*
* @param string $value The national number.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setNationalNumber(string $value): PhoneNumber
public function setNationalNumber(string $value): static
{
$this->nationalNumber = $value;
return $this;
}
/**
* Returns whether this phone number has an extension set.
*
* @return bool True if an extension is set, false otherwise.
*/
public function hasExtension(): bool
{
return $this->extension !== null;
return isset($this->extension) && $this->extension !== '';
}
/**
* Returns the extension of this phone number.
*
* @return string|null The extension, or null if not set.
*/
public function getExtension(): ?string
{
return $this->extension;
}
/**
* Sets the extension of this phone number.
*
* @param string $value The extension.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setExtension(string $value): PhoneNumber
public function setExtension(string $value): static
{
$this->extension = $value;
return $this;
}
/**
* Returns whether this phone number has the italian leading zero information set.
*/
public function hasItalianLeadingZero(): bool
{
return $this->italianLeadingZero !== null;
return isset($this->italianLeadingZero);
}
/**
* Sets whether this phone number uses an italian leading zero.
*
* @param bool $value True to use italian leading zero, false otherwise.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setItalianLeadingZero(bool $value): PhoneNumber
public function setItalianLeadingZero(bool $value): static
{
$this->italianLeadingZero = $value;
return $this;
@@ -340,137 +236,73 @@ class PhoneNumber implements \Serializable, \Stringable
/**
* Returns whether this phone number uses an italian leading zero.
*
* @return bool|null True if it uses an italian leading zero, false if it does not, null if not set.
* @return bool|null True if it uses an italian leading zero, false it it does not, null if not set.
*/
public function isItalianLeadingZero(): ?bool
{
return $this->italianLeadingZero;
return $this->italianLeadingZero ?? null;
}
/**
* Returns whether this phone number has a number of leading zeros set.
*
* @return bool True if a number of leading zeros is set, false otherwise.
*/
public function hasNumberOfLeadingZeros(): bool
{
return $this->hasNumberOfLeadingZeros;
}
/**
* Returns the number of leading zeros of this phone number.
*
* @return int The number of leading zeros.
*/
public function getNumberOfLeadingZeros(): int
{
return $this->numberOfLeadingZeros;
}
/**
* Sets the number of leading zeros of this phone number.
*
* @param int $value The number of leading zeros.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setNumberOfLeadingZeros(int $value): PhoneNumber
public function setNumberOfLeadingZeros(int $value): static
{
$this->hasNumberOfLeadingZeros = true;
$this->numberOfLeadingZeros = $value;
return $this;
}
/**
* Returns whether this phone number has a raw input.
*
* @return bool True if a raw input is set, false otherwise.
*/
public function hasRawInput(): bool
{
return $this->rawInput !== null;
return isset($this->rawInput);
}
/**
* Returns the raw input of this phone number.
*
* @return string|null The raw input, or null if not set.
*/
public function getRawInput(): ?string
{
return $this->rawInput;
}
/**
* Sets the raw input of this phone number.
*
* @param string $value The raw input.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setRawInput(string $value): PhoneNumber
public function setRawInput(string $value): static
{
$this->rawInput = $value;
return $this;
}
/**
* Returns whether this phone number has a country code source.
*
* @return bool True if a country code source is set, false otherwise.
*/
public function hasCountryCodeSource(): bool
{
return $this->countryCodeSource !== CountryCodeSource::UNSPECIFIED;
}
/**
* Returns the country code source of this phone number.
*
* @return int|null A CountryCodeSource constant, or null if not set.
*/
public function getCountryCodeSource(): ?int
public function getCountryCodeSource(): ?CountryCodeSource
{
return $this->countryCodeSource;
}
/**
* Sets the country code source of this phone number.
*
* @param int $value A CountryCodeSource constant.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setCountryCodeSource(int $value): PhoneNumber
public function setCountryCodeSource(CountryCodeSource $value): static
{
$this->countryCodeSource = $value;
return $this;
}
/**
* Returns whether this phone number has a preferred domestic carrier code.
*
* @return bool True if a preferred domestic carrier code is set, false otherwise.
*/
public function hasPreferredDomesticCarrierCode(): bool
{
return $this->preferredDomesticCarrierCode !== null;
return isset($this->preferredDomesticCarrierCode);
}
/**
* Returns the preferred domestic carrier code of this phone number.
*
* @return string|null The preferred domestic carrier code, or null if not set.
*/
public function getPreferredDomesticCarrierCode(): ?string
{
return $this->preferredDomesticCarrierCode;
}
/**
* Sets the preferred domestic carrier code of this phone number.
*
* @param string $value The preferred domestic carrier code.
* @return PhoneNumber This PhoneNumber instance, for chaining method calls.
*/
public function setPreferredDomesticCarrierCode(string $value): PhoneNumber
public function setPreferredDomesticCarrierCode(string $value): static
{
$this->preferredDomesticCarrierCode = $value;
return $this;
@@ -516,7 +348,7 @@ class PhoneNumber implements \Serializable, \Stringable
$outputString .= ' Extension: ' . $this->extension;
}
if ($this->hasCountryCodeSource()) {
$outputString .= ' Country Code Source: ' . $this->countryCodeSource;
$outputString .= ' Country Code Source: ' . $this->countryCodeSource->name;
}
if ($this->hasPreferredDomesticCarrierCode()) {
$outputString .= ' Preferred Domestic Carrier Code: ' . $this->preferredDomesticCarrierCode;
@@ -524,17 +356,11 @@ class PhoneNumber implements \Serializable, \Stringable
return $outputString;
}
/**
*
*/
public function serialize(): ?string
{
return serialize($this->__serialize());
}
/**
* @return array{?int,?string,?string,?bool,int,?string,int,?string}
*/
public function __serialize(): array
{
return [
@@ -549,16 +375,13 @@ class PhoneNumber implements \Serializable, \Stringable
];
}
/**
*
*/
public function unserialize($data)
public function unserialize($data): void
{
$this->__unserialize(unserialize($data, ['allowed_classes' => [__CLASS__]]));
}
/**
* @param array{int,?string,?string,?bool,int,?string,int,?string} $data
* @param array{int,string,string,bool|null,int,string|null,CountryCodeSource|null,string|null} $data
*/
public function __unserialize(array $data): void
{
@@ -569,10 +392,16 @@ class PhoneNumber implements \Serializable, \Stringable
$this->italianLeadingZero,
$this->numberOfLeadingZeros,
$this->rawInput,
$this->countryCodeSource,
$countryCodeSource,
$this->preferredDomesticCarrierCode
] = $data;
// BC layer to allow this method to unserialize "old" phonenumbers
if (is_int($countryCodeSource)) {
$countryCodeSource = CountryCodeSource::from($countryCodeSource);
}
$this->countryCodeSource = $countryCodeSource;
if ($this->numberOfLeadingZeros > 1) {
$this->hasNumberOfLeadingZeros = true;
}
@@ -6,8 +6,7 @@ namespace libphonenumber;
/**
* Phone Number Description
* @interal
* @phpstan-type PhoneNumberDescArray array{pattern?:string,example?:string,posLength?:int[],posLengthLocal?:int[]}
* @internal
*/
class PhoneNumberDesc
{
@@ -24,21 +23,6 @@ class PhoneNumberDesc
*/
protected array $possibleLengthLocalOnly = [];
public function __construct()
{
$this->clear();
}
public function clear(): PhoneNumberDesc
{
$this->clearNationalNumberPattern();
$this->clearPossibleLength();
$this->clearPossibleLengthLocalOnly();
$this->clearExampleNumber();
return $this;
}
/**
* @return int[]
*/
@@ -50,14 +34,15 @@ class PhoneNumberDesc
/**
* @param int[] $possibleLength
*/
public function setPossibleLength(array $possibleLength): void
public function setPossibleLength(array $possibleLength): static
{
$this->possibleLength = $possibleLength;
return $this;
}
public function addPossibleLength(int $possibleLength): void
{
if (!in_array($possibleLength, $this->possibleLength)) {
if (!in_array($possibleLength, $this->possibleLength, true)) {
$this->possibleLength[] = $possibleLength;
}
}
@@ -78,14 +63,16 @@ class PhoneNumberDesc
/**
* @param int[] $possibleLengthLocalOnly
*/
public function setPossibleLengthLocalOnly(array $possibleLengthLocalOnly): void
public function setPossibleLengthLocalOnly(array $possibleLengthLocalOnly): static
{
$this->possibleLengthLocalOnly = $possibleLengthLocalOnly;
return $this;
}
public function addPossibleLengthLocalOnly(int $possibleLengthLocalOnly): void
{
if (!in_array($possibleLengthLocalOnly, $this->possibleLengthLocalOnly)) {
if (!in_array($possibleLengthLocalOnly, $this->possibleLengthLocalOnly, true)) {
$this->possibleLengthLocalOnly[] = $possibleLengthLocalOnly;
}
}
@@ -95,6 +82,9 @@ class PhoneNumberDesc
$this->possibleLengthLocalOnly = [];
}
/**
* @return boolean
*/
public function hasNationalNumberPattern(): bool
{
return $this->hasNationalNumberPattern;
@@ -105,7 +95,7 @@ class PhoneNumberDesc
return $this->nationalNumberPattern;
}
public function setNationalNumberPattern(string $value): PhoneNumberDesc
public function setNationalNumberPattern(string $value): static
{
$this->hasNationalNumberPattern = true;
$this->nationalNumberPattern = $value;
@@ -113,13 +103,6 @@ class PhoneNumberDesc
return $this;
}
public function clearNationalNumberPattern(): PhoneNumberDesc
{
$this->hasNationalNumberPattern = false;
$this->nationalNumberPattern = '';
return $this;
}
public function hasExampleNumber(): bool
{
return $this->hasExampleNumber;
@@ -130,7 +113,7 @@ class PhoneNumberDesc
return $this->exampleNumber;
}
public function setExampleNumber(string $value): PhoneNumberDesc
public function setExampleNumber(string $value): static
{
$this->hasExampleNumber = true;
$this->exampleNumber = $value;
@@ -138,80 +121,20 @@ class PhoneNumberDesc
return $this;
}
public function clearExampleNumber(): self
{
$this->hasExampleNumber = false;
$this->exampleNumber = '';
return $this;
}
public function mergeFrom(PhoneNumberDesc $other): self
{
if ($other->hasNationalNumberPattern()) {
$this->setNationalNumberPattern($other->getNationalNumberPattern());
}
if ($other->hasExampleNumber()) {
$this->setExampleNumber($other->getExampleNumber());
}
$this->setPossibleLength($other->getPossibleLength());
$this->setPossibleLengthLocalOnly($other->getPossibleLengthLocalOnly());
return $this;
}
public function exactlySameAs(PhoneNumberDesc $other): bool
{
return $this->nationalNumberPattern === $other->nationalNumberPattern &&
$this->exampleNumber === $other->exampleNumber;
}
private static self $emptyObject;
/**
* Used for metadata as a shortcut to an empty object
* Use the same object to reduce load further
* @internal
* @return PhoneNumberDescArray
*/
public function toArray(): array
public static function empty(): self
{
$data = [];
if ($this->hasNationalNumberPattern()) {
$data['pattern'] = $this->getNationalNumberPattern();
}
if ($this->hasExampleNumber()) {
$data['example'] = $this->getExampleNumber();
if (!isset(self::$emptyObject)) {
self::$emptyObject = (new self())
->setPossibleLength([-1]);
}
$possibleLength = $this->getPossibleLength();
if (!empty($possibleLength)) {
$data['posLength'] = $possibleLength;
}
$possibleLengthLocalOnly = $this->getPossibleLengthLocalOnly();
if (!empty($possibleLengthLocalOnly)) {
$data['posLengthLocal'] = $possibleLengthLocalOnly;
}
return $data;
}
/**
* @internal
* @param PhoneNumberDescArray $input
*/
public function fromArray(array $input): static
{
if (isset($input['pattern']) && $input['pattern'] !== '') {
$this->setNationalNumberPattern($input['pattern']);
}
if (isset($input['example']) && $input['example'] !== '') {
$this->setExampleNumber($input['example']);
}
if (isset($input['posLength'])) {
$this->setPossibleLength($input['posLength']);
}
if (isset($input['posLengthLocal'])) {
$this->setPossibleLengthLocalOnly($input['posLengthLocal']);
}
return $this;
return self::$emptyObject;
}
}
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
@@ -14,10 +16,10 @@ namespace libphonenumber;
* Note: If you are considering storing the number in a neutral format, you are highly advised to
* use the PhoneNumber class.
*/
class PhoneNumberFormat
enum PhoneNumberFormat: int
{
public const E164 = 0;
public const INTERNATIONAL = 1;
public const NATIONAL = 2;
public const RFC3966 = 3;
case E164 = 0;
case INTERNATIONAL = 1;
case NATIONAL = 2;
case RFC3966 = 3;
}
@@ -4,7 +4,15 @@ declare(strict_types=1);
namespace libphonenumber;
class PhoneNumberMatch implements \Stringable
use InvalidArgumentException;
use Stringable;
use function mb_strlen;
/**
* @no-named-arguments
*/
class PhoneNumberMatch implements Stringable
{
/**
* The start index into the text.
@@ -16,6 +24,11 @@ class PhoneNumberMatch implements \Stringable
*/
private string $rawString;
/**
* The matched phone number.
*/
private PhoneNumber $number;
/**
* Creates a new match
*
@@ -23,14 +36,15 @@ class PhoneNumberMatch implements \Stringable
* @param string $rawString The matched substring of the target text
* @param PhoneNumber $number The matched phone number
*/
public function __construct(int $start, string $rawString, private PhoneNumber $number)
public function __construct(int $start, string $rawString, PhoneNumber $number)
{
if ($start < 0) {
throw new \InvalidArgumentException('Start index must be >= 0.');
throw new InvalidArgumentException('Start index must be >= 0.');
}
$this->start = $start;
$this->rawString = $rawString;
$this->number = $number;
}
/**
@@ -54,7 +68,7 @@ class PhoneNumberMatch implements \Stringable
*/
public function end(): int
{
return $this->start + \mb_strlen($this->rawString);
return $this->start + mb_strlen($this->rawString);
}
/**
@@ -65,7 +79,7 @@ class PhoneNumberMatch implements \Stringable
return $this->rawString;
}
public function __toString(): string
public function __toString()
{
return "PhoneNumberMatch [{$this->start()},{$this->end()}) {$this->rawString}";
}
@@ -1,71 +1,56 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* Type of phone numbers.
*/
class PhoneNumberType
enum PhoneNumberType: int
{
public const FIXED_LINE = 0;
public const MOBILE = 1;
// In some regions (e.g. the USA), it is impossible to distinguish between fixed-line and
// mobile numbers by looking at the phone number itself.
public const FIXED_LINE_OR_MOBILE = 2;
// Freephone lines
public const TOLL_FREE = 3;
public const PREMIUM_RATE = 4;
// The cost of this call is shared between the caller and the recipient, and is hence typically
// less than PREMIUM_RATE calls. See // http://en.wikipedia.org/wiki/Shared_Cost_Service for
// more information.
public const SHARED_COST = 5;
// Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
public const VOIP = 6;
// A personal number is associated with a particular person, and may be routed to either a
// MOBILE or FIXED_LINE number. Some more information can be found here:
// http://en.wikipedia.org/wiki/Personal_Numbers
public const PERSONAL_NUMBER = 7;
public const PAGER = 8;
// Used for "Universal Access Numbers" or "Company Numbers". They may be further routed to
// specific offices, but allow one number to be used for a company.
public const UAN = 9;
// A phone number is of type UNKNOWN when it does not fit any of the known patterns for a
// specific region.
public const UNKNOWN = 10;
// Emergency
public const EMERGENCY = 27;
// Voicemail
public const VOICEMAIL = 28;
// Short Code
public const SHORT_CODE = 29;
// Standard Rate
public const STANDARD_RATE = 30;
case FIXED_LINE = 0;
case MOBILE = 1;
/**
* @return array<int,string>
* In some regions (e.g. the USA), it is impossible to distinguish between fixed-line and
* mobile numbers by looking at the phone number itself.
*/
public static function values(): array
{
return [
self::FIXED_LINE => 'FIXED_LINE',
self::MOBILE => 'MOBILE',
self::FIXED_LINE_OR_MOBILE => 'FIXED_LINE_OR_MOBILE',
self::TOLL_FREE => 'TOLL_FREE',
self::PREMIUM_RATE => 'PREMIUM_RATE',
self::SHARED_COST => 'SHARED_COST',
self::VOIP => 'VOIP',
self::PERSONAL_NUMBER => 'PERSONAL_NUMBER',
self::PAGER => 'PAGER',
self::UAN => 'UAN',
self::UNKNOWN => 'UNKNOWN',
self::EMERGENCY => 'EMERGENCY',
self::VOICEMAIL => 'VOICEMAIL',
self::SHORT_CODE => 'SHORT_CODE',
self::STANDARD_RATE => 'STANDARD_RATE',
];
}
case FIXED_LINE_OR_MOBILE = 2;
/**
* Freephone lines
*/
case TOLL_FREE = 3;
case PREMIUM_RATE = 4;
/**
* The cost of this call is shared between the caller and the recipient, and is hence typically
* less than PREMIUM_RATE calls. See // http://en.wikipedia.org/wiki/Shared_Cost_Service for
* more information.
*/
case SHARED_COST = 5;
/**
* Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
*/
case VOIP = 6;
/**
* A personal number is associated with a particular person, and may be routed to either a
* MOBILE or FIXED_LINE number. Some more information can be found here:
* http://en.wikipedia.org/wiki/Personal_Numbers
*/
case PERSONAL_NUMBER = 7;
case PAGER = 8;
/**
* Used for "Universal Access Numbers" or "Company Numbers". They may be further routed to
* specific offices, but allow one number to be used for a company.
*/
case UAN = 9;
/**
* A phone number is of type UNKNOWN when it does not fit any of the known patterns for a
* specific region.
*/
case UNKNOWN = 10;
case EMERGENCY = 27;
case VOICEMAIL = 28;
case SHORT_CODE = 29;
case STANDARD_RATE = 30;
}
File diff suppressed because it is too large Load Diff
@@ -11,14 +11,6 @@ namespace libphonenumber;
*/
class RegexBasedMatcher implements MatcherAPIInterface
{
public static function create(): static
{
return new static();
}
// Keep PHPStan happy (Unsafe usage of new static())
final public function __construct() {}
/**
* Returns whether the given national number (a string containing only decimal digits) matches
* the national number pattern defined in the given {@code PhoneNumberDesc} message.
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* Cost categories of short numbers
* @package libphonenumber
*/
class ShortNumberCost
enum ShortNumberCost: int
{
public const TOLL_FREE = 3;
public const PREMIUM_RATE = 4;
public const STANDARD_RATE = 30;
public const UNKNOWN_COST = 10;
case TOLL_FREE = 3;
case PREMIUM_RATE = 4;
case STANDARD_RATE = 30;
case UNKNOWN_COST = 10;
}
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
/**
* Methods for getting information about short phone numbers, such as short codes and emergency
* numbers. Note that most commercial short numbers are not handled here, but by the
@@ -12,46 +14,43 @@
namespace libphonenumber;
use RuntimeException;
/**
* @phpstan-consistent-constructor
* @no-named-arguments
*/
class ShortNumberInfo
{
protected static ?ShortNumberInfo $instance;
protected MatcherAPIInterface $matcherAPI;
protected string $currentFilePrefix;
/**
* @var array<string,PhoneMetadata>
*/
protected array $regionToMetadataMap = [];
/**
* @var array<int,string[]>
*/
protected array $countryCallingCodeToRegionCodeMap = [];
/**
* @var array<int,PhoneMetadata>
*/
protected array $countryCodeToNonGeographicalMetadataMap = [];
protected const REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT = [
'BR',
'CL',
'NI',
];
protected function __construct(MatcherAPIInterface $matcherAPI)
{
$this->matcherAPI = $matcherAPI;
protected function __construct(
protected MatcherAPIInterface $matcherAPI,
protected MetadataSourceInterface $metadataSource = new MultiFileMetadataSourceImpl(__NAMESPACE__ . '\data\ShortNumberMetadata_'),
) {
// TODO: Create ShortNumberInfo for a given map
$this->countryCallingCodeToRegionCodeMap = CountryCodeToRegionCodeMap::COUNTRY_CODE_TO_REGION_CODE_MAP;
$this->currentFilePrefix = __DIR__ . '/data/ShortNumberMetadata';
// Initialise PhoneNumberUtil to make sure regex's are setup correctly
PhoneNumberUtil::getInstance();
}
/**
* Returns the singleton instance of ShortNumberInfo
*/
public static function getInstance(): ShortNumberInfo
{
if (!isset(static::$instance)) {
static::$instance = new self(RegexBasedMatcher::create());
static::$instance = new self(new RegexBasedMatcher());
}
return static::$instance;
@@ -78,15 +77,15 @@ class ShortNumberInfo
* Helper method to check that the country calling code of the number matches the region it's
* being dialed from.
*/
protected function regionDialingFromMatchesNumber(PhoneNumber $number, string $regionDialingFrom): bool
protected function regionDialingFromMatchesNumber(PhoneNumber $number, ?string $regionDialingFrom): bool
{
if (trim($regionDialingFrom) === '') {
if ($regionDialingFrom === null || $regionDialingFrom === '') {
return false;
}
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
return in_array(strtoupper($regionDialingFrom), $regionCodes);
return in_array(strtoupper($regionDialingFrom), $regionCodes, true);
}
/**
@@ -100,9 +99,9 @@ class ShortNumberInfo
/**
* Gets a valid short number for the specified region.
*
* @param $regionCode string the region for which an example short number is needed
* @param $regionCode String the region for which an example short number is needed
* @return string a valid short number for the specified region. Returns an empty string when the
* metadata does not contain such information.
* metadata does not contain such information.
*/
public function getExampleShortNumber(string $regionCode): string
{
@@ -123,36 +122,14 @@ class ShortNumberInfo
{
$regionCode = strtoupper($regionCode);
if (!in_array($regionCode, ShortNumbersRegionCodeSet::SHORT_NUMBERS_REGION_CODE_SET)) {
if (!in_array($regionCode, ShortNumbersRegionCodeSet::SHORT_NUMBERS_REGION_CODE_SET, true)) {
return null;
}
if (!isset($this->regionToMetadataMap[$regionCode])) {
// The regionCode here will be valid and won't be '001', so we don't need to worry about
// what to pass in for the country calling code.
$this->loadMetadataFromFile($this->currentFilePrefix, $regionCode, 0);
}
return $this->regionToMetadataMap[$regionCode] ?? null;
}
protected function loadMetadataFromFile(string $filePrefix, string $regionCode, int $countryCallingCode): void
{
$isNonGeoRegion = PhoneNumberUtil::REGION_CODE_FOR_NON_GEO_ENTITY === $regionCode;
$fileName = $filePrefix . '_' . ($isNonGeoRegion ? $countryCallingCode : $regionCode) . '.php';
if (!is_readable($fileName)) {
throw new \Exception('missing metadata: ' . $fileName);
}
$metadataLoader = new DefaultMetadataLoader();
$data = $metadataLoader->loadMetadata($fileName);
$metadata = new PhoneMetadata();
$metadata->fromArray($data);
if ($isNonGeoRegion) {
$this->countryCodeToNonGeographicalMetadataMap[$countryCallingCode] = $metadata;
} else {
$this->regionToMetadataMap[$regionCode] = $metadata;
try {
return $this->metadataSource->getMetadataForRegion($regionCode);
} catch (RuntimeException) {
return null;
}
}
@@ -160,18 +137,17 @@ class ShortNumberInfo
* Gets a valid short number for the specified cost category.
*
* @param string $regionCode the region for which an example short number is needed
* @param int $cost the ShortNumberCost category of number that is needed
* @param ShortNumberCost $cost the cost category of number that is needed
* @return string a valid short number for the specified region and cost category. Returns an empty string
* when the metadata does not contain such information, or the cost is UNKNOWN_COST.
* when the metadata does not contain such information, or the cost is UNKNOWN_COST.
*/
public function getExampleShortNumberForCost(string $regionCode, int $cost): string
public function getExampleShortNumberForCost(string $regionCode, ShortNumberCost $cost): string
{
$phoneMetadata = $this->getMetadataForRegion($regionCode);
if ($phoneMetadata === null) {
return '';
}
/** @var PhoneNumberDesc $desc */
$desc = null;
switch ($cost) {
case ShortNumberCost::TOLL_FREE:
@@ -207,15 +183,13 @@ class ShortNumberInfo
*
* @param string $number the phone number to test
* @param string $regionCode the region where the phone number if being dialled
* @return boolean whether the number might be used to connect to an emergency service in the given region
* @return bool whether the number might be used to connect to an emergency service in the given region
*/
public function connectsToEmergencyNumber(string $number, string $regionCode): bool
{
return $this->matchesEmergencyNumberHelper($number, $regionCode, true /* allows prefix match */);
}
/**
*/
protected function matchesEmergencyNumberHelper(string $number, string $regionCode, bool $allowPrefixMatch): bool
{
$number = PhoneNumberUtil::extractPossibleNumber($number);
@@ -237,7 +211,7 @@ class ShortNumberInfo
$allowPrefixMatchForRegion = (
$allowPrefixMatch
&& !in_array(strtoupper($regionCode), static::REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT)
&& !in_array(strtoupper($regionCode), static::REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT, true)
);
return $this->matcherAPI->matchNationalNumber($normalizedNumber, $emergencyDesc, $allowPrefixMatchForRegion);
@@ -247,12 +221,12 @@ class ShortNumberInfo
* Given a valid short number, determines whether it is carrier-specific (however, nothing is
* implied about its validity). Carrier-specific numbers may connect to a different end-point, or
* not connect at all, depending on the user's carrier. If it is important that the number is
* valid, then its validity must first be checked using {@link #isValidShortNumber} or
* {@link #isValidShortNumberForRegion}.
* valid, then its validity must first be checked using {@see isValidShortNumber} or
* {@see isValidShortNumberForRegion}.
*
* @param PhoneNumber $number the valid short number to check
* @return boolean whether the short number is carrier-specific, assuming the input was a valid short
* number
* @return bool whether the short number is carrier-specific, assuming the input was a valid short
* number
*/
public function isCarrierSpecific(PhoneNumber $number): bool
{
@@ -272,12 +246,12 @@ class ShortNumberInfo
* given region (however, nothing is implied about its validity). Carrier-specific numbers may
* connect to a different end-point, or not connect at all, depending on the user's carrier. If
* it is important that the number is valid, then its validity must first be checked using
* {@link #isValidShortNumber} or {@link #isValidShortNumberForRegion}. Returns false if the
* {@see isValidShortNumber} or {@see isValidShortNumberForRegion}. Returns false if the
* number doesn't match the region provided.
* @param PhoneNumber $number The valid short number to check
* @param string $regionDialingFrom The region from which the number is dialed
* @return bool Whether the short number is carrier-specific in the provided region, assuming the
* input was a valid short number
* input was a valid short number
*/
public function isCarrierSpecificForRegion(PhoneNumber $number, string $regionDialingFrom): bool
{
@@ -297,13 +271,13 @@ class ShortNumberInfo
* implied about its validity). An SMS service is where the primary or only intended usage is to
* receive and/or send text messages (SMSs). This includes MMS as MMS numbers downgrade to SMS if
* the other party isn't MMS-capable. If it is important that the number is valid, then its
* validity must first be checked using {@link #isValidShortNumber} or {@link
* #isValidShortNumberForRegion}. Returns false if the number doesn't match the region provided.
* validity must first be checked using {@see isValidShortNumber} or {@see isValidShortNumberForRegion}.
* Returns false if the number doesn't match the region provided.
*
* @param PhoneNumber $number The valid short number to check
* @param string $regionDialingFrom The region from which the number is dialed
* @return bool Whether the short number is an SMS service in the provided region, assuming the input
* was a valid short number.
* was a valid short number.
*/
public function isSmsServiceForRegion(PhoneNumber $number, string $regionDialingFrom): bool
{
@@ -330,7 +304,7 @@ class ShortNumberInfo
*/
protected function getRegionCodeForShortNumberFromRegionList(PhoneNumber $number, array $regionCodes): ?string
{
if ($regionCodes === []) {
if (count($regionCodes) === 0) {
return null;
}
@@ -355,11 +329,11 @@ class ShortNumberInfo
/**
* Check whether a short number is a possible number. If a country calling code is shared by
* multiple regions, this returns true if it's possible in any of them. This provides a more
* lenient check than {@link #isValidShortNumber}. See {@link
* #IsPossibleShortNumberForRegion(PhoneNumber, String)} for details.
* lenient check than {@see isValidShortNumber}. See {@see isPossibleShortNumberForRegion}
* for details.
*
* @param $number PhoneNumber the short number to check
* @return boolean whether the number is a possible short number
* @return bool whether the number is a possible short number
*/
public function isPossibleShortNumber(PhoneNumber $number): bool
{
@@ -373,7 +347,7 @@ class ShortNumberInfo
continue;
}
if (in_array($shortNumberLength, $phoneMetadata->getGeneralDesc()->getPossibleLength())) {
if (in_array($shortNumberLength, $phoneMetadata->getGeneralDesc()->getPossibleLength(), true)) {
return true;
}
}
@@ -384,11 +358,11 @@ class ShortNumberInfo
/**
* Check whether a short number is a possible number when dialled from a region, given the number
* in the form of a string, and the region where the number is dialled from. This provides a more
* lenient check than {@link #isValidShortNumber}.
* lenient check than {@see isValidShortNumber}.
*
* @param PhoneNumber $shortNumber The short number to check
* @param string $regionDialingFrom Region dialing From
* @return boolean whether the number is a possible short number
* @return bool whether the number is a possible short number
*/
public function isPossibleShortNumberForRegion(PhoneNumber $shortNumber, string $regionDialingFrom): bool
{
@@ -403,28 +377,23 @@ class ShortNumberInfo
}
$numberLength = strlen($this->getNationalSignificantNumber($shortNumber));
return in_array($numberLength, $phoneMetadata->getGeneralDesc()->getPossibleLength());
return in_array($numberLength, $phoneMetadata->getGeneralDesc()->getPossibleLength(), true);
}
/**
* Tests whether a short number matches a valid pattern. If a country calling code is shared by
* multiple regions, this returns true if it's valid in any of them. Note that this doesn't verify
* the number is actually in use, which is impossible to tell by just looking at the number
* itself. See {@link #isValidShortNumberForRegion(PhoneNumber, String)} for details.
* itself. See {@see isValidShortNumberForRegion(PhoneNumber, String)} for details.
*
* @param $number PhoneNumber the short number for which we want to test the validity
* @return boolean whether the short number matches a valid pattern
* @return bool whether the short number matches a valid pattern
*/
public function isValidShortNumber(PhoneNumber $number): bool
{
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
$regionCode = $this->getRegionCodeForShortNumberFromRegionList($number, $regionCodes);
if ($regionCode === null) {
return false;
}
if (count($regionCodes) > 1) {
if ($regionCode !== null && count($regionCodes) > 1) {
// If a matching region had been found for the phone number from among two or more regions,
// then we have already implicitly verified its validity for that region.
return true;
@@ -439,10 +408,10 @@ class ShortNumberInfo
* itself.
*
* @param PhoneNumber $number The Short number for which we want to test the validity
* @param string $regionDialingFrom the region from which the number is dialed
* @return boolean whether the short number matches a valid pattern
* @param string|null $regionDialingFrom the region from which the number is dialed
* @return bool whether the short number matches a valid pattern
*/
public function isValidShortNumberForRegion(PhoneNumber $number, string $regionDialingFrom): bool
public function isValidShortNumberForRegion(PhoneNumber $number, ?string $regionDialingFrom): bool
{
if (!$this->regionDialingFromMatchesNumber($number, $regionDialingFrom)) {
return false;
@@ -482,14 +451,13 @@ class ShortNumberInfo
* }}</pre>
*
* @param PhoneNumber $number the short number for which we want to know the expected cost category,
* as a string
* as a string
* @param string $regionDialingFrom the region from which the number is dialed
* @return int the expected cost category for that region of the short number. Returns UNKNOWN_COST if
* the number does not match a cost category. Note that an invalid number may match any cost
* category.
* @see ShortNumberCost
* @return ShortNumberCost the expected cost category for that region of the short number. Returns ShortNumberCost::UNKNOWN_COST if
* the number does not match a cost category. Note that an invalid number may match any cost
* category.
*/
public function getExpectedCostForRegion(PhoneNumber $number, string $regionDialingFrom): int
public function getExpectedCostForRegion(PhoneNumber $number, string $regionDialingFrom): ShortNumberCost
{
if (!$this->regionDialingFromMatchesNumber($number, $regionDialingFrom)) {
return ShortNumberCost::UNKNOWN_COST;
@@ -505,7 +473,7 @@ class ShortNumberInfo
// The possible lengths are not present for a particular sub-type if they match the general
// description; for this reason, we check the possible lengths against the general description
// first to allow an early exit if possible.
if (!in_array(strlen($shortNumber), $phoneMetadata->getGeneralDesc()->getPossibleLength())) {
if (!in_array(strlen($shortNumber), $phoneMetadata->getGeneralDesc()->getPossibleLength(), true)) {
return ShortNumberCost::UNKNOWN_COST;
}
@@ -534,7 +502,7 @@ class ShortNumberInfo
/**
* Gets the expected cost category of a short number (however, nothing is implied about its
* validity). If the country calling code is unique to a region, this method behaves exactly the
* same as {@link #getExpectedCostForRegion(PhoneNumber, String)}. However, if the country calling
* same as {@see getExpectedCostForRegion(PhoneNumber, String)}. However, if the country calling
* code is shared by multiple regions, then it returns the highest cost in the sequence
* PREMIUM_RATE, UNKNOWN_COST, STANDARD_RATE, TOLL_FREE. The reason for the position of
* UNKNOWN_COST in this order is that if a number is UNKNOWN_COST in one region but STANDARD_RATE
@@ -548,16 +516,16 @@ class ShortNumberInfo
* </p>
*
* Note: If the region from which the number is dialed is known, it is highly preferable to call
* {@link #getExpectedCostForRegion(PhoneNumber, String)} instead.
* {@see getExpectedCostForRegion(PhoneNumber, String)} instead.
*
* @param PhoneNumber $number the short number for which we want to know the expected cost category
* @return int the highest expected cost category of the short number in the region(s) with the given
* country calling code
* @see ShortNumberCost
* @return ShortNumberCost the highest expected cost category of the short number in the region(s) with the given
* country calling code
*/
public function getExpectedCost(PhoneNumber $number): int
public function getExpectedCost(PhoneNumber $number): ShortNumberCost
{
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
if ($regionCodes === []) {
return ShortNumberCost::UNKNOWN_COST;
}
@@ -598,7 +566,7 @@ class ShortNumberInfo
*
* @param string $number the phone number to test
* @param string $regionCode the region where the phone number is being dialled
* @return boolean whether the number exactly matches an emergency services number in the given region
* @return bool whether the number exactly matches an emergency services number in the given region
*/
public function isEmergencyNumber(string $number, string $regionCode): bool
{
@@ -636,7 +604,7 @@ class ShortNumberInfo
*/
protected function matchesPossibleNumberAndNationalNumber(string $number, PhoneNumberDesc $numberDesc): bool
{
if (count($numberDesc->getPossibleLength()) > 0 && !in_array(strlen($number), $numberDesc->getPossibleLength())) {
if (count($numberDesc->getPossibleLength()) > 0 && !in_array(strlen($number), $numberDesc->getPossibleLength(), true)) {
return false;
}
@@ -7,12 +7,19 @@
* @internal
*/
declare(strict_types=1);
namespace libphonenumber;
/**
* @internal
*/
class ShortNumbersRegionCodeSet
{
// A set of all region codes for which data is available.
/**
* A set of all region codes for which data is available.
* @var string[]
*/
public const SHORT_NUMBERS_REGION_CODE_SET = [
'AC',
'AD',
@@ -256,5 +263,4 @@ class ShortNumbersRegionCodeSet
'ZM',
'ZW',
];
}
@@ -1,38 +1,40 @@
<?php
declare(strict_types=1);
namespace libphonenumber;
/**
* Possible outcomes when testing if a PhoneNumber is possible.
*/
class ValidationResult
enum ValidationResult: int
{
/**
* The number length matches that of valid numbers for this region
*/
public const IS_POSSIBLE = 0;
case IS_POSSIBLE = 0;
/**
* The number has an invalid country calling code.
*/
public const INVALID_COUNTRY_CODE = 1;
case INVALID_COUNTRY_CODE = 1;
/**
* The number is shorter than all valid numbers for this region.
*/
public const TOO_SHORT = 2;
case TOO_SHORT = 2;
/**
* The number is longer than all valid numbers for this region.
*/
public const TOO_LONG = 3;
case TOO_LONG = 3;
/**
* The number length matches that of local numbers for this region only (i.e. numbers that may
* be able to be dialled within an area, but do not have all the information to be dialled from
* anywhere inside or outside the country).
*/
public const IS_POSSIBLE_LOCAL_ONLY = 4;
case IS_POSSIBLE_LOCAL_ONLY = 4;
/**
* The number is longer than the shortest valid numbers for this region, shorter than the
@@ -41,5 +43,5 @@ class ValidationResult
* isPossibleNumberForTypeWithReason was called, and there are no numbers of this type at all
* for this region.
*/
public const INVALID_LENGTH = 5;
case INVALID_LENGTH = 5;
}
@@ -7,80 +7,49 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 800,
'generalDesc' => [
'pattern' => '(?:00|[1-9]\\d)\\d{6}',
'posLength' => [
8,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'pattern' => '(?:00|[1-9]\\d)\\d{6}',
'example' => '12345678',
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'\\d',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_800 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 800;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:00|[1-9]\d)\d{6}')
->setPossibleLength([8]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['\d'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:00|[1-9]\d)\d{6}')
->setExampleNumber('12345678');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,80 +7,49 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 808,
'generalDesc' => [
'pattern' => '[1-9]\\d{7}',
'posLength' => [
8,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'pattern' => '[1-9]\\d{7}',
'example' => '12345678',
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[1-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_808 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 808;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[1-9]\d{7}')
->setPossibleLength([8]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[1-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('[1-9]\d{7}')
->setExampleNumber('12345678');
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,82 +7,51 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 870,
'generalDesc' => [
'pattern' => '7\\d{11}|[235-7]\\d{8}',
'posLength' => [
9,
12,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'pattern' => '(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}',
'example' => '301234567',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '2\\d{8}',
'example' => '201234567',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[235-7]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_870 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 870;
protected ?string $internationalPrefix = '';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('7\d{11}|[235-7]\d{8}')
->setPossibleLength([9, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[356]|774[45])\d{8}|7[6-8]\d{7}')
->setExampleNumber('301234567');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[235-7]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('2\d{8}')
->setExampleNumber('201234567')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,80 +7,49 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 878,
'generalDesc' => [
'pattern' => '10\\d{10}',
'posLength' => [
12,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '10\\d{10}',
'example' => '101234567890',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{5})(\\d{5})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_878 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 878;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('10\d{10}')
->setPossibleLength([12]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{5})(\d{5})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('10\d{10}')
->setExampleNumber('101234567890');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,89 +7,53 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 881,
'generalDesc' => [
'pattern' => '6\\d{9}|[0-36-9]\\d{8}',
'posLength' => [
9,
10,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'pattern' => '6\\d{9}|[0-36-9]\\d{8}',
'example' => '612345678',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{3})(\\d{5})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[0-37-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{5,6})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'6',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_881 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 881;
protected ?string $internationalPrefix = '';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('6\d{9}|[0-36-9]\d{8}')
->setPossibleLength([9, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('6\d{9}|[0-36-9]\d{8}')
->setExampleNumber('612345678');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{5})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[0-37-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{5,6})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['6'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,155 +7,89 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 882,
'generalDesc' => [
'pattern' => '[13]\\d{6}(?:\\d{2,5})?|[19]\\d{7}|(?:[25]\\d\\d|4)\\d{7}(?:\\d{2})?',
'posLength' => [
7,
8,
9,
10,
11,
12,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'pattern' => '342\\d{4}|(?:337|49)\\d{6}|(?:3(?:2|47|7\\d{3})|50\\d{3})\\d{7}',
'example' => '3421234',
'posLength' => [
7,
8,
9,
10,
12,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:345\\d|9[89])\\d{6}|(?:10|2(?:3|85\\d)|3(?:[15]|[69]\\d\\d)|4[15-8]|51)\\d{8}',
'example' => '390123456789',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'pattern' => '348[57]\\d{7}',
'example' => '34851234567',
'posLength' => [
11,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'16|342',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'49',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1[36]|9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'3[23]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3,4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'16',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'10|23|3(?:[15]|4[57])|4|51',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'34',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4,5})(\\d{5})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[1-35]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_882 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 882;
protected ?string $internationalPrefix = '';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[13]\d{6}(?:\d{2,5})?|[19]\d{7}|(?:[25]\d\d|4)\d{7}(?:\d{2})?')
->setPossibleLength([7, 8, 9, 10, 11, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('342\d{4}|(?:337|49)\d{6}|(?:3(?:2|47|7\d{3})|50\d{3})\d{7}')
->setExampleNumber('3421234')
->setPossibleLength([7, 8, 9, 10, 12]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['16|342'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['49'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1[36]|9'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['3[23]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3,4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['16'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['10|23|3(?:[15]|4[57])|4|51'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['34'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4,5})(\d{5})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[1-35]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\d{4}|6\d{5,10})|(?:345\d|9[89])\d{6}|(?:10|2(?:3|85\d)|3(?:[15]|[69]\d\d)|4[15-8]|51)\d{8}')
->setExampleNumber('390123456789');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = (new PhoneNumberDesc())
->setNationalNumberPattern('348[57]\d{7}')
->setExampleNumber('34851234567')
->setPossibleLength([11]);
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,120 +7,69 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 883,
'generalDesc' => [
'pattern' => '(?:[1-4]\\d|51)\\d{6,10}',
'posLength' => [
8,
9,
10,
11,
12,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '(?:2(?:00\\d\\d|10)|(?:370[1-9]|51\\d0)\\d)\\d{7}|51(?:00\\d{5}|[24-9]0\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\d{5,9}',
'example' => '510012345',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{2,8})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[14]|2[24-689]|3[02-689]|51[24-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'510',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'21',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'51[13]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[235]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_883 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 883;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[1-4]\d|51)\d{6,10}')
->setPossibleLength([8, 9, 10, 11, 12]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{2,8})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[14]|2[24-689]|3[02-689]|51[24-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['510'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['21'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['51[13]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[235]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:00\d\d|10)|(?:370[1-9]|51\d0)\d)\d{7}|51(?:00\d{5}|[24-9]0\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\d{5,9}')
->setExampleNumber('510012345');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,49 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 888,
'generalDesc' => [
'pattern' => '\\d{11}',
'posLength' => [
11,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '\\d{11}',
'example' => '12345678901',
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{5})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_888 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 888;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('\d{11}')
->setPossibleLength([11]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{5})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern([])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('\d{11}')
->setExampleNumber('12345678901');
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,86 +7,51 @@
* @internal
*/
return [
'id' => '001',
'countryCode' => 979,
'generalDesc' => [
'pattern' => '[1359]\\d{8}',
'posLength' => [
9,
],
'posLengthLocal' => [
8,
],
],
'fixedLine' => [
'posLength' => [
-1,
],
],
'mobile' => [
'posLength' => [
-1,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'pattern' => '[1359]\\d{8}',
'example' => '123456789',
'posLengthLocal' => [
8,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[1359]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_979 extends PhoneMetadata
{
protected const ID = '001';
protected const COUNTRY_CODE = 979;
protected ?string $internationalPrefix = '';
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[1359]\d{8}')
->setPossibleLengthLocalOnly([8])
->setPossibleLength([9]);
$this->mobile = PhoneNumberDesc::empty();
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('[1359]\d{8}')
->setExampleNumber('123456789')
->setPossibleLengthLocalOnly([8]);
$this->fixedLine = PhoneNumberDesc::empty();
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[1359]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,77 +7,47 @@
* @internal
*/
return [
'id' => 'AC',
'countryCode' => 247,
'generalDesc' => [
'pattern' => '(?:[01589]\\d|[46])\\d{4}',
'posLength' => [
5,
6,
],
],
'fixedLine' => [
'pattern' => '6[2-467]\\d{3}',
'example' => '62889',
'posLength' => [
5,
],
],
'mobile' => [
'pattern' => '4\\d{4}',
'example' => '40123',
'posLength' => [
5,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '(?:0[1-9]|[1589]\\d)\\d{4}',
'example' => '542011',
'posLength' => [
6,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AC extends PhoneMetadata
{
protected const ID = 'AC';
protected const COUNTRY_CODE = 247;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[01589]\d|[46])\d{4}')
->setPossibleLength([5, 6]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4\d{4}')
->setExampleNumber('40123')
->setPossibleLength([5]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('6[2-467]\d{3}')
->setExampleNumber('62889')
->setPossibleLength([5]);
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:0[1-9]|[1589]\d)\d{4}')
->setExampleNumber('542011')
->setPossibleLength([6]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,110 +7,70 @@
* @internal
*/
return [
'id' => 'AD',
'countryCode' => 376,
'generalDesc' => [
'pattern' => '(?:1|6\\d)\\d{7}|[135-9]\\d{5}',
'posLength' => [
6,
8,
9,
],
],
'fixedLine' => [
'pattern' => '[78]\\d{5}',
'example' => '712345',
'posLength' => [
6,
],
],
'mobile' => [
'pattern' => '690\\d{6}|[356]\\d{5}',
'example' => '312345',
'posLength' => [
6,
9,
],
],
'tollFree' => [
'pattern' => '180[02]\\d{4}',
'example' => '18001234',
'posLength' => [
8,
],
],
'premiumRate' => [
'pattern' => '[19]\\d{5}',
'example' => '912345',
'posLength' => [
6,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '1800\\d{4}',
'posLength' => [
8,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[135-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'6',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AD extends PhoneMetadata
{
protected const ID = 'AD';
protected const COUNTRY_CODE = 376;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1|6\d)\d{7}|[135-9]\d{5}')
->setPossibleLength([6, 8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('690\d{6}|[356]\d{5}')
->setExampleNumber('312345')
->setPossibleLength([6, 9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('[19]\d{5}')
->setExampleNumber('912345')
->setPossibleLength([6]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('[78]\d{5}')
->setExampleNumber('712345')
->setPossibleLength([6]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[135-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['6'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('180[02]\d{4}')
->setExampleNumber('18001234')
->setPossibleLength([8]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('1800\d{4}')
->setPossibleLength([8]);
}
}
@@ -7,128 +7,83 @@
* @internal
*/
return [
'id' => 'AE',
'countryCode' => 971,
'generalDesc' => [
'pattern' => '(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}',
'posLength' => [
5,
6,
7,
8,
9,
10,
11,
12,
],
],
'fixedLine' => [
'pattern' => '[2-4679][2-8]\\d{6}',
'example' => '22345678',
'posLength' => [
8,
],
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '5[024-68]\\d{7}',
'example' => '501234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '400\\d{6}|800\\d{2,9}',
'example' => '800123456',
],
'premiumRate' => [
'pattern' => '900[02]\\d{5}',
'example' => '900234567',
'posLength' => [
9,
],
],
'sharedCost' => [
'pattern' => '700[05]\\d{5}',
'example' => '700012345',
'posLength' => [
9,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '600[25]\\d{5}',
'example' => '600212345',
'posLength' => [
9,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2,9})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'60|8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[236]|[479][2-8]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d)(\\d{5})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[479]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AE extends PhoneMetadata
{
protected const ID = 'AE';
protected const COUNTRY_CODE = 971;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[4-7]\d|9[0-689])\d{7}|800\d{2,9}|[2-4679]\d{7}')
->setPossibleLength([5, 6, 7, 8, 9, 10, 11, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('5[024-68]\d{7}')
->setExampleNumber('501234567')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[02]\d{5}')
->setExampleNumber('900234567')
->setPossibleLength([9]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-4679][2-8]\d{6}')
->setExampleNumber('22345678')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2,9})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['60|8'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[236]|[479][2-8]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d)(\d{5})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[479]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('400\d{6}|800\d{2,9}')
->setExampleNumber('800123456');
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('700[05]\d{5}')
->setExampleNumber('700012345')
->setPossibleLength([9]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('600[25]\d{5}')
->setExampleNumber('600212345')
->setPossibleLength([9]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,109 +7,69 @@
* @internal
*/
return [
'id' => 'AF',
'countryCode' => 93,
'generalDesc' => [
'pattern' => '[2-7]\\d{8}',
'posLength' => [
9,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}',
'example' => '234567890',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '7\\d{8}',
'example' => '701234567',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[1-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-7]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-7]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AF extends PhoneMetadata
{
protected const ID = 'AF';
protected const COUNTRY_CODE = 93;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-7]\d{8}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('7\d{8}')
->setExampleNumber('701234567')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\d{6}')
->setExampleNumber('234567890')
->setPossibleLengthLocalOnly([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[1-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-7]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-7]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,83 +7,62 @@
* @internal
*/
return [
'id' => 'AG',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:268|[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}',
'example' => '2684601234',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}',
'example' => '2684641234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'pattern' => '26848[01]\\d{4}',
'example' => '2684801234',
'posLengthLocal' => [
7,
],
],
'pager' => [
'pattern' => '26840[69]\\d{4}',
'example' => '2684061234',
'posLengthLocal' => [
7,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([457]\\d{6})$|1',
'nationalPrefixTransformRule' => '268$1',
'numberFormat' => [],
'leadingDigits' => '268',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AG extends PhoneMetadata
{
protected const ID = 'AG';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '268';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([457]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '268$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:268|[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}')
->setExampleNumber('2684641234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('268(?:4(?:6[0-38]|84)|56[0-2])\d{4}')
->setExampleNumber('2684601234')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('26848[01]\d{4}')
->setExampleNumber('2684801234')
->setPossibleLengthLocalOnly([7]);
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('26840[69]\d{4}')
->setExampleNumber('2684061234')
->setPossibleLengthLocalOnly([7]);
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,81 +7,59 @@
* @internal
*/
return [
'id' => 'AI',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:264|[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '264(?:292|4(?:6[12]|9[78]))\\d{4}',
'example' => '2644612345',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}',
'example' => '2642351234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'pattern' => '264724\\d{4}',
'example' => '2647241234',
'posLengthLocal' => [
7,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([2457]\\d{6})$|1',
'nationalPrefixTransformRule' => '264$1',
'numberFormat' => [],
'leadingDigits' => '264',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AI extends PhoneMetadata
{
protected const ID = 'AI';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '264';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([2457]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '264$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:264|[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\d{4}')
->setExampleNumber('2642351234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('264(?:292|4(?:6[12]|9[78]))\d{4}')
->setExampleNumber('2644612345')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('264724\d{4}')
->setExampleNumber('2647241234')
->setPossibleLengthLocalOnly([7]);
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,142 +7,94 @@
* @internal
*/
return [
'id' => 'AL',
'countryCode' => 355,
'generalDesc' => [
'pattern' => '(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}',
'posLength' => [
6,
7,
8,
9,
],
'posLengthLocal' => [
5,
],
],
'fixedLine' => [
'pattern' => '4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}',
'example' => '22345678',
'posLength' => [
8,
],
'posLengthLocal' => [
5,
6,
7,
],
],
'mobile' => [
'pattern' => '6(?:[78][2-9]|9\\d)\\d{6}',
'example' => '672123456',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800\\d{4}',
'example' => '8001234',
'posLength' => [
7,
],
],
'premiumRate' => [
'pattern' => '900[1-9]\\d\\d',
'example' => '900123',
'posLength' => [
6,
],
],
'sharedCost' => [
'pattern' => '808[1-9]\\d\\d',
'example' => '808123',
'posLength' => [
6,
],
],
'personalNumber' => [
'pattern' => '700[2-9]\\d{4}',
'example' => '70021234',
'posLength' => [
8,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3,4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'80|9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'4[2-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2358][2-5]|4',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[23578]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'6',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AL extends PhoneMetadata
{
protected const ID = 'AL';
protected const COUNTRY_CODE = 355;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:700\d\d|900)\d{3}|8\d{5,7}|(?:[2-5]|6\d)\d{7}')
->setPossibleLengthLocalOnly([5])
->setPossibleLength([6, 7, 8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('6(?:[78][2-9]|9\d)\d{6}')
->setExampleNumber('672123456')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[1-9]\d\d')
->setExampleNumber('900123')
->setPossibleLength([6]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('4505[0-2]\d{3}|(?:[2358][16-9]\d[2-9]|4410)\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\d))\d{5}')
->setExampleNumber('22345678')
->setPossibleLengthLocalOnly([5, 6, 7])
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3,4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['80|9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['4[2-6]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2358][2-5]|4'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[23578]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['6'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{4}')
->setExampleNumber('8001234')
->setPossibleLength([7]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('808[1-9]\d\d')
->setExampleNumber('808123')
->setPossibleLength([6]);
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('700[2-9]\d{4}')
->setExampleNumber('70021234')
->setPossibleLength([8]);
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,112 +7,82 @@
* @internal
*/
return [
'id' => 'AM',
'countryCode' => 374,
'generalDesc' => [
'pattern' => '(?:[1-489]\\d|55|60|77)\\d{6}',
'posLength' => [
8,
],
'posLengthLocal' => [
5,
6,
],
],
'fixedLine' => [
'pattern' => '(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}',
'example' => '10123456',
'posLengthLocal' => [
5,
6,
],
],
'mobile' => [
'pattern' => '(?:33|4[1349]|55|77|88|9[13-9])\\d{6}',
'example' => '77123456',
],
'tollFree' => [
'pattern' => '800\\d{5}',
'example' => '80012345',
],
'premiumRate' => [
'pattern' => '90[016]\\d{5}',
'example' => '90012345',
],
'sharedCost' => [
'pattern' => '80[1-4]\\d{5}',
'example' => '80112345',
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[0-2])\\d{4}',
'example' => '60271234',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[89]0',
],
'nationalPrefixFormattingRule' => '0 $1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'2|3[12]',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1|47',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[3-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AM extends PhoneMetadata
{
protected const ID = 'AM';
protected const COUNTRY_CODE = 374;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[1-489]\d|55|60|77)\d{6}')
->setPossibleLengthLocalOnly([5, 6])
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:33|4[1349]|55|77|88|9[13-9])\d{6}')
->setExampleNumber('77123456');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90[016]\d{5}')
->setExampleNumber('90012345');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:1[0-25]|47)\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\d{5}')
->setExampleNumber('10123456')
->setPossibleLengthLocalOnly([5, 6]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[89]0'])
->setNationalPrefixFormattingRule('0 $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['2|3[12]'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1|47'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[3-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{5}')
->setExampleNumber('80012345');
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('80[1-4]\d{5}')
->setExampleNumber('80112345');
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\d|9[0-2])\d{4}')
->setExampleNumber('60271234');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,50 @@
* @internal
*/
return [
'id' => 'AO',
'countryCode' => 244,
'generalDesc' => [
'pattern' => '[29]\\d{8}',
'posLength' => [
9,
],
],
'fixedLine' => [
'pattern' => '2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}',
'example' => '222123456',
],
'mobile' => [
'pattern' => '9[1-79]\\d{7}',
'example' => '923123456',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[29]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AO extends PhoneMetadata
{
protected const ID = 'AO';
protected const COUNTRY_CODE = 244;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[29]\d{8}')
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('9[1-79]\d{7}')
->setExampleNumber('923123456');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2\d(?:[0134][25-9]|[25-9]\d)\d{5}')
->setExampleNumber('222123456');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[29]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,292 +7,197 @@
* @internal
*/
return [
'id' => 'AR',
'countryCode' => 54,
'generalDesc' => [
'pattern' => '(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}',
'posLength' => [
10,
11,
],
'posLengthLocal' => [
6,
7,
8,
],
],
'fixedLine' => [
'pattern' => '3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:21[2-6]|(?:3[06]|49)4|6(?:04|1[2-8])|9[17][4-6])|3(?:(?:36|64)4|4(?:1[2-8]|[25][4-6]|84)|5(?:1[2-9]|[38][4-6])|8(?:[17][2-6]|3[4-6]|8[3-68])))\\d{6}|(?:2(?:23|64|99)|3(?:43|85))[3-6]\\d{6}|(?:2(?:657|9(?:54|66))|3(?:487|7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:[28]0|37|6[36]|9[48])|3(?:62|7[069]|80))[45]\\d{6}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:2(?:62|81)|320|622|9(?:42|83))|3(?:329|4(?:62|76|89)|564))[2-6]\\d{5}|(?:2(?:284|3(?:02|23)|477|920)|3(?:4(?:46|[89]2)|541|878))[2-7]\\d{5}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|35|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}',
'example' => '1123456789',
'posLength' => [
10,
],
'posLengthLocal' => [
6,
7,
8,
],
],
'mobile' => [
'pattern' => '93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:21[2-6]|(?:3[06]|49)4|6(?:04|1[2-8])|9[17][4-6])|3(?:(?:36|64)4|4(?:1[2-8]|[25][4-6]|84)|5(?:1[2-9]|[38][4-6])|8(?:[17][2-6]|3[4-6]|8[3-68]))))\\d{6}|9(?:2(?:23|64|99)|3(?:43|85))[3-6]\\d{6}|9(?:2(?:657|9(?:54|66))|3(?:487|7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:[28]0|37|6[36]|9[48])|3(?:62|7[069]|80))[45]\\d{6}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:2(?:62|81)|320|622|9(?:42|83))|3(?:329|4(?:62|76|89)|564))[2-6]\\d{5}|9(?:2(?:284|3(?:02|23)|477|920)|3(?:4(?:46|[89]2)|541|878))[2-7]\\d{5}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|35|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}',
'example' => '91123456789',
'posLengthLocal' => [
6,
7,
8,
],
],
'tollFree' => [
'pattern' => '800\\d{7,8}',
'example' => '8001234567',
],
'premiumRate' => [
'pattern' => '60[04579]\\d{7}',
'example' => '6001234567',
'posLength' => [
10,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '810\\d{7}',
'example' => '8101234567',
'posLength' => [
10,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '810\\d{7}',
'posLength' => [
10,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?',
'nationalPrefixTransformRule' => '9$1',
'numberFormat' => [
[
'pattern' => '(\\d{3})',
'format' => '$1',
'leadingDigitsPatterns' => [
'0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[1-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[2-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[1-8]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{2})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])',
'2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'[68]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[23]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d)(\\d{4})(\\d{2})(\\d{4})',
'format' => '$2 15-$3-$4',
'leadingDigitsPatterns' => [
'9(?:2[2-469]|3[3-578])',
'9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))',
'9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{2})(\\d{4})(\\d{4})',
'format' => '$2 15-$3-$4',
'leadingDigitsPatterns' => [
'91',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{5})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{3})(\\d{4})',
'format' => '$2 15-$3-$4',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{4})(\\d{2})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])',
'2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'[68]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[23]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d)(\\d{4})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3-$4',
'leadingDigitsPatterns' => [
'9(?:2[2-469]|3[3-578])',
'9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))',
'9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
],
],
[
'pattern' => '(\\d)(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3-$4',
'leadingDigitsPatterns' => [
'91',
],
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{5})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3-$4',
'leadingDigitsPatterns' => [
'9',
],
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AR extends PhoneMetadata
{
protected const ID = 'AR';
protected const COUNTRY_CODE = 54;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?';
protected ?string $internationalPrefix = '00';
protected ?string $nationalPrefixTransformRule = '9$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:11|[89]\d\d)\d{8}|[2368]\d{9}')
->setPossibleLengthLocalOnly([6, 7, 8])
->setPossibleLength([10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\d{5}|9(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\d{5}|9(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\d{5}|(?:675\d|9(?:11[1-8]\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68]))))\d{6}|9(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\d{5}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\d{5}|9(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\d{5}')
->setExampleNumber('91123456789')
->setPossibleLengthLocalOnly([6, 7, 8]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('60[04579]\d{7}')
->setExampleNumber('6001234567')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\d{5}|(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\d{5}|(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\d{5}|(?:(?:11[1-8]|670)\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68])))\d{6}|(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\d{5}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\d{5}|(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\d{5}')
->setExampleNumber('1123456789')
->setPossibleLengthLocalOnly([6, 7, 8])
->setPossibleLength([10]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})')
->setFormat('$1')
->setLeadingDigitsPattern(['0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[1-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[2-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[1-8]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{2})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern([
'2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])',
'2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['[68]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[23]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{2})(\d{4})')
->setFormat('$2 15-$3-$4')
->setLeadingDigitsPattern([
'9(?:2[2-469]|3[3-578])',
'9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))',
'9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{2})(\d{4})(\d{4})')
->setFormat('$2 15-$3-$4')
->setLeadingDigitsPattern(['91'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{5})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3})(\d{4})')
->setFormat('$2 15-$3-$4')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{7,8}')
->setExampleNumber('8001234567');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('810\d{7}')
->setExampleNumber('8101234567')
->setPossibleLength([10]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('810\d{7}')
->setPossibleLength([10]);
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{2})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern([
'2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])',
'2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['[68]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[23]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{2})(\d{4})')
->setFormat('$1 $2 $3-$4')
->setLeadingDigitsPattern([
'9(?:2[2-469]|3[3-578])',
'9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))',
'9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]',
'9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]',
]),
(new NumberFormat())
->setPattern('(\d)(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2 $3-$4')
->setLeadingDigitsPattern(['91']),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{5})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3-$4')
->setLeadingDigitsPattern(['9']),
];
}
}
@@ -7,78 +7,55 @@
* @internal
*/
return [
'id' => 'AS',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:[58]\\d\\d|684|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '6846(?:22|33|44|55|77|88|9[19])\\d{4}',
'example' => '6846221234',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '684(?:2(?:48|5[2468]|7[26])|7(?:3[13]|70|82))\\d{4}',
'example' => '6847331234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([267]\\d{6})$|1',
'nationalPrefixTransformRule' => '684$1',
'numberFormat' => [],
'leadingDigits' => '684',
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AS extends PhoneMetadata
{
protected const ID = 'AS';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '684';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([267]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '684$1';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[58]\d\d|684|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('684(?:2(?:48|5[2468]|7[26])|7(?:3[13]|70|82))\d{4}')
->setExampleNumber('6847331234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('6846(?:22|33|44|55|77|88|9[19])\d{4}')
->setExampleNumber('6846221234')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,271 +7,159 @@
* @internal
*/
return [
'id' => 'AT',
'countryCode' => 43,
'generalDesc' => [
'pattern' => '1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}',
'posLength' => [
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
],
'posLengthLocal' => [
3,
],
],
'fixedLine' => [
'pattern' => '1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}',
'example' => '1234567890',
'posLengthLocal' => [
3,
],
],
'mobile' => [
'pattern' => '6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}',
'example' => '664123456',
'posLength' => [
7,
8,
9,
10,
11,
12,
13,
],
],
'tollFree' => [
'pattern' => '800\\d{6,10}',
'example' => '800123456',
'posLength' => [
9,
10,
11,
12,
13,
],
],
'premiumRate' => [
'pattern' => '(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}',
'example' => '900123456',
'posLength' => [
9,
10,
11,
12,
13,
],
],
'sharedCost' => [
'pattern' => '8(?:10|2[018])\\d{6,10}|828\\d{5}',
'example' => '810123456',
'posLength' => [
8,
9,
10,
11,
12,
13,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}',
'example' => '780123456',
'posLength' => [
5,
6,
7,
8,
9,
10,
11,
12,
13,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{4})',
'format' => '$1',
'leadingDigitsPatterns' => [
'14',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3,12})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1(?:11|[2-9])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'517',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3,5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'5[079]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{6})',
'format' => '$1',
'leadingDigitsPatterns' => [
'[18]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3,10})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3,9})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-467]|5[2-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4,7})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d)(\\d{3,12})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1(?:11|[2-9])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'517',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3,5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'5[079]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3,10})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3,9})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-467]|5[2-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4,7})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AT extends PhoneMetadata
{
protected const ID = 'AT';
protected const COUNTRY_CODE = 43;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('1\d{3,12}|2\d{6,12}|43(?:(?:0\d|5[02-9])\d{3,9}|2\d{4,5}|[3467]\d{4}|8\d{4,6}|9\d{4,7})|5\d{4,12}|8\d{7,12}|9\d{8,12}|(?:[367]\d|4[0-24-9])\d{4,11}')
->setPossibleLengthLocalOnly([3])
->setPossibleLength([4, 5, 6, 7, 8, 9, 10, 11, 12, 13]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('6(?:485|(?:5[0-3579]|6[013-9]|[7-9]\d)\d)\d{3,9}')
->setExampleNumber('664123456')
->setPossibleLength([7, 8, 9, 10, 11, 12, 13]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:8[69][2-68]|9(?:0[01]|3[019]))\d{6,10}')
->setExampleNumber('900123456')
->setPossibleLength([9, 10, 11, 12, 13]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:11\d|[2-9]\d{3,11})|(?:316|463)\d{3,10}|648[34]\d{3,9}|(?:51|66|73)2\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-7]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\d{4,10}')
->setExampleNumber('1234567890')
->setPossibleLengthLocalOnly([3]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})')
->setFormat('$1')
->setLeadingDigitsPattern(['14'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3,12})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1(?:11|[2-9])'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['517'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3,5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['5[079]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{6})')
->setFormat('$1')
->setLeadingDigitsPattern(['[18]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3,10})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]', '(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3,9})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-467]|5[2-6]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4,7})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{6,10}')
->setExampleNumber('800123456')
->setPossibleLength([9, 10, 11, 12, 13]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:10|2[018])\d{6,10}|828\d{5}')
->setExampleNumber('810123456')
->setPossibleLength([8, 9, 10, 11, 12, 13]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('5(?:0[1-9]|17|[79]\d)\d{2,10}|7[28]0\d{6,10}')
->setExampleNumber('780123456')
->setPossibleLength([5, 6, 7, 8, 9, 10, 11, 12, 13]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{3,12})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1(?:11|[2-9])'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['517'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3,5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['5[079]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3,10})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]', '(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3,9})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-467]|5[2-6]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4,7})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,250 +7,157 @@
* @internal
*/
return [
'id' => 'AU',
'countryCode' => 61,
'generalDesc' => [
'pattern' => '1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}',
'posLength' => [
5,
6,
7,
8,
9,
10,
12,
],
],
'fixedLine' => [
'pattern' => '(?:(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\d|2[0-8]))\\d|3(?:(?:[0-3589]\\d|6[1-9]|7[0-35-9])\\d|4(?:[0-578]\\d|90)))\\d\\d|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4])|3\\d\\d)|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}',
'example' => '212345678',
'posLength' => [
9,
],
'posLengthLocal' => [
8,
],
],
'mobile' => [
'pattern' => '4(?:79[01]|83[0-389]|94[0-4])\\d{5}|4(?:[0-36]\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\d{6}',
'example' => '412345678',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '180(?:0\\d{3}|2)\\d{3}',
'example' => '1800123456',
'posLength' => [
7,
10,
],
],
'premiumRate' => [
'pattern' => '190[0-26]\\d{6}',
'example' => '1900123456',
'posLength' => [
10,
],
],
'sharedCost' => [
'pattern' => '13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}',
'example' => '1300123456',
'posLength' => [
6,
8,
10,
12,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}',
'example' => '147101234',
'posLength' => [
9,
],
],
'pager' => [
'pattern' => '163\\d{2,6}',
'example' => '1631234',
'posLength' => [
5,
6,
7,
8,
9,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '1(?:3(?:00\\d{5}|45[0-4])|802)\\d{3}|1[38]00\\d{6}|13\\d{4}',
'posLength' => [
6,
7,
8,
10,
12,
],
],
'internationalPrefix' => '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011',
'preferredInternationalPrefix' => '0011',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '(183[12])|0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3,4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'16',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'13',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'19',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'180',
'1802',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3,4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'19',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'16',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'14|4',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2378]',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '$CC ($1)',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1(?:30|[89])',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'130',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3,4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'16',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'16',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'14|4',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2378]',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '$CC ($1)',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1(?:30|[89])',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mainCountryForCode' => true,
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AU extends PhoneMetadata
{
protected const ID = 'AU';
protected const COUNTRY_CODE = 61;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '(183[12])|0';
protected ?string $internationalPrefix = '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011';
protected ?string $preferredInternationalPrefix = '0011';
protected bool $mainCountryForCode = true;
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:[0-79]\d{7}(?:\d(?:\d{2})?)?|8[0-24-9]\d{7})|[2-478]\d{8}|1\d{4,7}')
->setPossibleLength([5, 6, 7, 8, 9, 10, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4(?:79[01]|83[0-389]|94[0-478])\d{5}|4(?:[0-36]\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-37-9])\d{6}')
->setExampleNumber('412345678')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('190[0-26]\d{6}')
->setExampleNumber('1900123456')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:2(?:(?:[0-26-9]\d|3[0-8]|5[0135-9])\d|4(?:[02-9]\d|10))|3(?:(?:[0-3589]\d|6[1-9]|7[0-35-9])\d|4(?:[0-578]\d|90))|7(?:[013-57-9]\d|2[0-8])\d)\d\d|8(?:51(?:0(?:0[03-9]|[12479]\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\d|7[89]|9[0-4])|[34]\d\d)|(?:6[0-8]|[78]\d)\d{3}|9(?:[02-9]\d{3}|1(?:(?:[0-58]\d|6[0135-9])\d|7(?:0[0-24-9]|[1-9]\d)|9(?:[0-46-9]\d|5[0-79])))))\d{3}')
->setExampleNumber('212345678')
->setPossibleLengthLocalOnly([8])
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3,4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['16'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['13'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['19'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['180', '1802'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3,4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['19'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['16'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['14|4'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2378]'])
->setNationalPrefixFormattingRule('(0$1)')
->setDomesticCarrierCodeFormattingRule('$CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1(?:30|[89])'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['130'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('180(?:0\d{3}|2)\d{3}')
->setExampleNumber('1800123456')
->setPossibleLength([7, 10]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('13(?:00\d{6}(?:\d{2})?|45[0-4]\d{3})|13\d{4}')
->setExampleNumber('1300123456')
->setPossibleLength([6, 8, 10, 12]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('14(?:5(?:1[0458]|[23][458])|71\d)\d{4}')
->setExampleNumber('147101234')
->setPossibleLength([9]);
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('163\d{2,6}')
->setExampleNumber('1631234')
->setPossibleLength([5, 6, 7, 8, 9]);
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:3(?:00\d{5}|45[0-4])|802)\d{3}|1[38]00\d{6}|13\d{4}')
->setPossibleLength([6, 7, 8, 10, 12]);
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3,4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['16'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['16'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['14|4'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2378]'])
->setNationalPrefixFormattingRule('(0$1)')
->setDomesticCarrierCodeFormattingRule('$CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1(?:30|[89])'])
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,75 +7,56 @@
* @internal
*/
return [
'id' => 'AW',
'countryCode' => 297,
'generalDesc' => [
'pattern' => '(?:[25-79]\\d\\d|800)\\d{4}',
'posLength' => [
7,
],
],
'fixedLine' => [
'pattern' => '5(?:2\\d|8[1-9])\\d{4}',
'example' => '5212345',
],
'mobile' => [
'pattern' => '(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}',
'example' => '5601234',
],
'tollFree' => [
'pattern' => '800\\d{4}',
'example' => '8001234',
],
'premiumRate' => [
'pattern' => '900\\d{4}',
'example' => '9001234',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '(?:28\\d|501)\\d{4}',
'example' => '5011234',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[25-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AW extends PhoneMetadata
{
protected const ID = 'AW';
protected const COUNTRY_CODE = 297;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[25-79]\d\d|800)\d{4}')
->setPossibleLength([7]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:290|5[69]\d|6(?:[03]0|22|4[0-2]|[69]\d)|7(?:[34]\d|7[07])|9(?:6[45]|9[4-8]))\d{4}')
->setExampleNumber('5601234');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900\d{4}')
->setExampleNumber('9001234');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('5(?:2\d|8[1-9])\d{4}')
->setExampleNumber('5212345');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[25-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{4}')
->setExampleNumber('8001234');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:28\d|501)\d{4}')
->setExampleNumber('5011234');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,98 +7,56 @@
* @internal
*/
return [
'id' => 'AX',
'countryCode' => 358,
'generalDesc' => [
'pattern' => '2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}',
'posLength' => [
5,
6,
7,
8,
9,
10,
11,
12,
],
],
'fixedLine' => [
'pattern' => '18[1-8]\\d{3,6}',
'example' => '181234567',
'posLength' => [
6,
7,
8,
9,
],
],
'mobile' => [
'pattern' => '4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}',
'example' => '412345678',
'posLength' => [
6,
7,
8,
9,
10,
],
],
'tollFree' => [
'pattern' => '800\\d{4,6}',
'example' => '800123456',
'posLength' => [
7,
8,
9,
],
],
'premiumRate' => [
'pattern' => '[67]00\\d{5,6}',
'example' => '600123456',
'posLength' => [
8,
9,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}',
'example' => '10112345',
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))',
'preferredInternationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [],
'leadingDigits' => '18',
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AX extends PhoneMetadata
{
protected const ID = 'AX';
protected const COUNTRY_CODE = 358;
protected const LEADING_DIGITS = '18';
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))';
protected ?string $preferredInternationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('2\d{4,9}|35\d{4,5}|(?:60\d\d|800)\d{4,6}|7\d{5,11}|(?:[14]\d|3[0-46-9]|50)\d{4,8}')
->setPossibleLength([5, 6, 7, 8, 9, 10, 11, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4946\d{2,6}|(?:4[0-8]|50)\d{4,8}')
->setExampleNumber('412345678')
->setPossibleLength([6, 7, 8, 9, 10]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('[67]00\d{5,6}')
->setExampleNumber('600123456')
->setPossibleLength([8, 9]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('18[1-8]\d{3,6}')
->setExampleNumber('181234567')
->setPossibleLength([6, 7, 8, 9]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{4,6}')
->setExampleNumber('800123456')
->setPossibleLength([7, 8, 9]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('20\d{4,8}|60[12]\d{5,6}|7(?:099\d{4,5}|5[03-9]\d{3,7})|20[2-59]\d\d|(?:606|7(?:0[78]|1|3\d))\d{7}|(?:10|29|3[09]|70[1-5]\d)\d{4,8}')
->setExampleNumber('10112345');
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,145 +7,97 @@
* @internal
*/
return [
'id' => 'AZ',
'countryCode' => 994,
'generalDesc' => [
'pattern' => '365\\d{6}|(?:[124579]\\d|60|88)\\d{7}',
'posLength' => [
9,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}',
'example' => '123123456',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}',
'example' => '401234567',
],
'tollFree' => [
'pattern' => '88\\d{7}',
'example' => '881234567',
],
'premiumRate' => [
'pattern' => '900200\\d{3}',
'example' => '900200123',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[1-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'90',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'1[28]|2|365|46',
'1[28]|2|365[45]|46',
'1[28]|2|365(?:4|5[02])|46',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[13-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'90',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'1[28]|2|365|46',
'1[28]|2|365[45]|46',
'1[28]|2|365(?:4|5[02])|46',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[13-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_AZ extends PhoneMetadata
{
protected const ID = 'AZ';
protected const COUNTRY_CODE = 994;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('365\d{6}|(?:[124579]\d|60|88)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('36554\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\d{7}')
->setExampleNumber('401234567');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900200\d{3}')
->setExampleNumber('900200123');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2[12]428|3655[02])\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\d{5}|(?:(?:1[28]|46)\d|2(?:[014-6]2|[23]3))\d{6}')
->setExampleNumber('123123456')
->setPossibleLengthLocalOnly([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[1-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['90'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['1[28]|2|365|46', '1[28]|2|365[45]|46', '1[28]|2|365(?:4|5[02])|46'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[13-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('88\d{7}')
->setExampleNumber('881234567');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['90'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['1[28]|2|365|46', '1[28]|2|365[45]|46', '1[28]|2|365(?:4|5[02])|46'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[13-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,155 +7,106 @@
* @internal
*/
return [
'id' => 'BA',
'countryCode' => 387,
'generalDesc' => [
'pattern' => '6\\d{8}|(?:[35689]\\d|49|70)\\d{6}',
'posLength' => [
8,
9,
],
'posLengthLocal' => [
6,
],
],
'fixedLine' => [
'pattern' => '(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}',
'example' => '30212345',
'posLength' => [
8,
],
'posLengthLocal' => [
6,
],
],
'mobile' => [
'pattern' => '6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}',
'example' => '61123456',
],
'tollFree' => [
'pattern' => '8[08]\\d{6}',
'example' => '80123456',
'posLength' => [
8,
],
],
'premiumRate' => [
'pattern' => '9[0246]\\d{6}',
'example' => '90123456',
'posLength' => [
8,
],
],
'sharedCost' => [
'pattern' => '8[12]\\d{6}',
'example' => '82123456',
'posLength' => [
8,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}',
'example' => '70341234',
'posLength' => [
8,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[2-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'6[1-3]|[7-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[3-5]|6[56]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'6',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'6[1-3]|[7-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[3-5]|6[56]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'6',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BA extends PhoneMetadata
{
protected const ID = 'BA';
protected const COUNTRY_CODE = 387;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('6\d{8}|(?:[35689]\d|49|70)\d{6}')
->setPossibleLengthLocalOnly([6])
->setPossibleLength([8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('6040\d{5}|6(?:03|[1-356]|44|7\d)\d{6}')
->setExampleNumber('61123456');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('9[0246]\d{6}')
->setExampleNumber('90123456')
->setPossibleLength([8]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\d{5}')
->setExampleNumber('30212345')
->setPossibleLengthLocalOnly([6])
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[2-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['6[1-3]|[7-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[3-5]|6[56]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['6'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8[08]\d{6}')
->setExampleNumber('80123456')
->setPossibleLength([8]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('8[12]\d{6}')
->setExampleNumber('82123456')
->setPossibleLength([8]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('703[235]0\d{3}|70(?:2[0-5]|3[0146]|[56]0)\d{4}')
->setExampleNumber('70341234')
->setPossibleLength([8]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['6[1-3]|[7-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[3-5]|6[56]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['6'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,86 +7,63 @@
* @internal
*/
return [
'id' => 'BB',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:246|[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}',
'example' => '2464123456',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}',
'example' => '2462501234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '(?:246976|900[2-9]\\d\\d)\\d{4}',
'example' => '9002123456',
'posLengthLocal' => [
7,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'pattern' => '24631\\d{5}',
'example' => '2463101234',
'posLengthLocal' => [
7,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}',
'example' => '2464301234',
'posLengthLocal' => [
7,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([2-9]\\d{6})$|1',
'nationalPrefixTransformRule' => '246$1',
'numberFormat' => [],
'leadingDigits' => '246',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BB extends PhoneMetadata
{
protected const ID = 'BB';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '246';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([2-9]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '246$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:246|[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('246(?:(?:2(?:[3568]\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\d)|69[5-7]|8(?:[2-5]\d|83))\d|52(?:1[147]|20))\d{3}')
->setExampleNumber('2462501234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:246976|900[2-9]\d\d)\d{4}')
->setExampleNumber('9002123456')
->setPossibleLengthLocalOnly([7]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('246521[0369]\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\d|3[2-9])|5(?:20|[34]\d|54|7[1-3])|6(?:2\d|38)|7[35]7|9(?:1[89]|63))\d{4}')
->setExampleNumber('2464123456')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('24631\d{5}')
->setExampleNumber('2463101234')
->setPossibleLengthLocalOnly([7]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\d|3[016]|53))\d{4}')
->setExampleNumber('2464301234')
->setPossibleLengthLocalOnly([7]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,118 +7,80 @@
* @internal
*/
return [
'id' => 'BD',
'countryCode' => 880,
'generalDesc' => [
'pattern' => '[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}',
'posLength' => [
6,
7,
8,
9,
10,
],
],
'fixedLine' => [
'pattern' => '(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:[23]\\d|[45])\\d\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}',
'example' => '27111234',
],
'mobile' => [
'pattern' => '(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}',
'example' => '1812345678',
'posLength' => [
10,
],
],
'tollFree' => [
'pattern' => '80[03]\\d{7}',
'example' => '8001234567',
'posLength' => [
10,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '96(?:0[469]|1[0-47]|3[389]|43|6[69]|7[78])\\d{6}',
'example' => '9604123456',
'posLength' => [
10,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{4,6})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'31[5-8]|[459]1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3,7})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3,6})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[13-9]|2[23]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{7,8})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BD extends PhoneMetadata
{
protected const ID = 'BD';
protected const COUNTRY_CODE = 880;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[1-469]\d{9}|8[0-79]\d{7,8}|[2-79]\d{8}|[2-9]\d{7}|[3-9]\d{6}|[57-9]\d{5}')
->setPossibleLength([6, 7, 8, 9, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1[13-9]\d|644)\d{7}|(?:3[78]|44|66)[02-9]\d{7}')
->setExampleNumber('1812345678')
->setPossibleLength([10]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:4(?:31\d\d|423)|5222)\d{3}(?:\d{2})?|8332[6-9]\d\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\d{4}|(?:2(?:[23]\d|[45])\d\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\d{5}|[59]1\d{5}')
->setExampleNumber('27111234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{4,6})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['31[5-8]|[459]1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3,7})')
->setFormat('$1-$2')
->setLeadingDigitsPattern([
'3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3,6})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[13-9]|2[23]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{7,8})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('80[03]\d{7}')
->setExampleNumber('8001234567')
->setPossibleLength([10]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('96(?:0[469]|1[0-47]|3[389]|43|6[69]|7[78])\d{6}')
->setExampleNumber('9604123456')
->setPossibleLength([10]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,123 +7,86 @@
* @internal
*/
return [
'id' => 'BE',
'countryCode' => 32,
'generalDesc' => [
'pattern' => '4\\d{8}|[1-9]\\d{7}',
'posLength' => [
8,
9,
],
],
'fixedLine' => [
'pattern' => '80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}',
'example' => '12345678',
'posLength' => [
8,
],
],
'mobile' => [
'pattern' => '4[5-9]\\d{7}',
'example' => '470123456',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800[1-9]\\d{4}',
'example' => '80012345',
'posLength' => [
8,
],
],
'premiumRate' => [
'pattern' => '(?:70(?:2[0-57]|3[04-7]|44|6[04-69]|7[0579])|90\\d\\d)\\d{4}',
'example' => '90012345',
'posLength' => [
8,
],
],
'sharedCost' => [
'pattern' => '7879\\d{4}',
'example' => '78791234',
'posLength' => [
8,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '78(?:0[578]|1[014-8]|2[25]|3[15-8]|48|5[05]|60|7[06-8]|9\\d)\\d{4}',
'example' => '78102345',
'posLength' => [
8,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:80|9)0',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[239]|4[23]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[15-8]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'4',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BE extends PhoneMetadata
{
protected const ID = 'BE';
protected const COUNTRY_CODE = 32;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('4\d{8}|[1-9]\d{7}')
->setPossibleLength([8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4[5-9]\d{7}')
->setExampleNumber('470123456')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:70(?:2[0-57]|3[04-7]|44|6[04-69]|7[0579])|90\d\d)\d{4}')
->setExampleNumber('90012345')
->setPossibleLength([8]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('80[2-8]\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\d|6[013-57-9]|71|8[1-79]|9[2-4])\d{6}')
->setExampleNumber('12345678')
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:80|9)0'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[239]|4[23]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[15-8]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['4'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800[1-9]\d{4}')
->setExampleNumber('80012345')
->setPossibleLength([8]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('7879\d{4}')
->setExampleNumber('78791234')
->setPossibleLength([8]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('78(?:0[578]|1[014-8]|2[25]|3[15-8]|48|5[05]|60|7[06-8]|9\d)\d{4}')
->setExampleNumber('78102345')
->setPossibleLength([8]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,50 @@
* @internal
*/
return [
'id' => 'BF',
'countryCode' => 226,
'generalDesc' => [
'pattern' => '[025-7]\\d{7}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}',
'example' => '20491234',
],
'mobile' => [
'pattern' => '(?:0[1-7]|5[0-8]|[67]\\d)\\d{6}',
'example' => '70123456',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[025-7]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BF extends PhoneMetadata
{
protected const ID = 'BF';
protected const COUNTRY_CODE = 226;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[025-7]\d|44)\d{6}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:0[1-7]|44|5[0-8]|[67]\d)\d{6}')
->setExampleNumber('70123456');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\d|50|6[5-7]))\d{4}')
->setExampleNumber('20491234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[024-7]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,255 +7,164 @@
* @internal
*/
return [
'id' => 'BG',
'countryCode' => 359,
'generalDesc' => [
'pattern' => '00800\\d{7}|[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}',
'posLength' => [
6,
7,
8,
9,
12,
],
'posLengthLocal' => [
4,
5,
],
],
'fixedLine' => [
'pattern' => '2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}',
'example' => '2123456',
'posLength' => [
6,
7,
8,
],
'posLengthLocal' => [
4,
5,
],
],
'mobile' => [
'pattern' => '(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}',
'example' => '43012345',
'posLength' => [
8,
9,
],
],
'tollFree' => [
'pattern' => '(?:00800\\d\\d|800)\\d{5}',
'example' => '80012345',
'posLength' => [
8,
12,
],
],
'premiumRate' => [
'pattern' => '90\\d{6}',
'example' => '90123456',
'posLength' => [
8,
],
],
'sharedCost' => [
'pattern' => '700\\d{5}',
'example' => '70012345',
'posLength' => [
8,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{6})',
'format' => '$1',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d)(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'43[1-6]|70[1-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2,3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:70|8)0',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{2})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'43[1-7]|7',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[48]|9[08]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d)(\\d)(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'43[1-6]|70[1-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2,3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:70|8)0',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{2})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'43[1-7]|7',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[48]|9[08]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BG extends PhoneMetadata
{
protected const ID = 'BG';
protected const COUNTRY_CODE = 359;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('00800\d{7}|[2-7]\d{6,7}|[89]\d{6,8}|2\d{5}')
->setPossibleLengthLocalOnly([4, 5])
->setPossibleLength([6, 7, 8, 9, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:43[07-9]|99[69]\d)\d{5}|(?:8[7-9]|98)\d{7}')
->setExampleNumber('43012345')
->setPossibleLength([8, 9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90\d{6}')
->setExampleNumber('90123456')
->setPossibleLength([8]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2\d{5,7}|(?:43[1-6]|70[1-9])\d{4,5}|(?:[36]\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\d{5,6}')
->setExampleNumber('2123456')
->setPossibleLengthLocalOnly([4, 5])
->setPossibleLength([6, 7, 8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{6})')
->setFormat('$1')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d)(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['43[1-6]|70[1-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2,3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:70|8)0'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{2})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['43[1-7]|7'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[48]|9[08]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:00800\d\d|800)\d{5}')
->setExampleNumber('80012345')
->setPossibleLength([8, 12]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('700\d{5}')
->setExampleNumber('70012345')
->setPossibleLength([8]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d)(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['43[1-6]|70[1-9]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2,3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:70|8)0'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{2})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['43[1-7]|7'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[48]|9[08]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,76 +7,57 @@
* @internal
*/
return [
'id' => 'BH',
'countryCode' => 973,
'generalDesc' => [
'pattern' => '[136-9]\\d{7}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|55|7[7-9]|88)|9[69][69])|7(?:[07]\\d\\d|1(?:11|78)))\\d{4}',
'example' => '17001234',
],
'mobile' => [
'pattern' => '(?:3(?:[0-79]\\d|8[0-57-9])\\d|6(?:3(?:00|33|6[16])|441|6(?:3[03-9]|[69]\\d|7[0-689])))\\d{4}',
'example' => '36001234',
],
'tollFree' => [
'pattern' => '8[02369]\\d{6}',
'example' => '80123456',
],
'premiumRate' => [
'pattern' => '(?:87|9[0-8])\\d{6}',
'example' => '90123456',
],
'sharedCost' => [
'pattern' => '84\\d{6}',
'example' => '84123456',
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[13679]|8[02-4679]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BH extends PhoneMetadata
{
protected const ID = 'BH';
protected const COUNTRY_CODE = 973;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[136-9]\d{7}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3(?:[0-79]\d|8[0-57-9])\d|6(?:3(?:00|33|6[16])|441|6(?:3[03-9]|[69]\d|7[0-689])))\d{4}')
->setExampleNumber('36001234');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:87|9[0-8])\d{6}')
->setExampleNumber('90123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1(?:3[1356]|6[0156]|7\d)\d|6(?:1[16]\d|500|6(?:0\d|3[12]|44|55|7[7-9]|88)|9[69][69])|7(?:[07]\d\d|1(?:11|78)))\d{4}')
->setExampleNumber('17001234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[13679]|8[02-4679]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8[02369]\d{6}')
->setExampleNumber('80123456');
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('84\d{6}')
->setExampleNumber('84123456');
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,50 @@
* @internal
*/
return [
'id' => 'BI',
'countryCode' => 257,
'generalDesc' => [
'pattern' => '(?:[267]\\d|31)\\d{6}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '(?:22|31)\\d{6}',
'example' => '22201234',
],
'mobile' => [
'pattern' => '(?:29|[67][125-9])\\d{6}',
'example' => '79561234',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[2367]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BI extends PhoneMetadata
{
protected const ID = 'BI';
protected const COUNTRY_CODE = 257;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[267]\d|31)\d{6}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:29|6[124-9]|7[125-9])\d{6}')
->setExampleNumber('79561234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:22|31)\d{6}')
->setExampleNumber('22201234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[2367]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,93 +7,62 @@
* @internal
*/
return [
'id' => 'BJ',
'countryCode' => 229,
'generalDesc' => [
'pattern' => '(?:01\\d|[24-689])\\d{7}',
'posLength' => [
8,
10,
],
],
'fixedLine' => [
'pattern' => '2090\\d{4}|(?:012\\d\\d|2(?:02|1[037]|2[45]|3[68]|4\\d))\\d{5}',
'example' => '0120211234',
],
'mobile' => [
'pattern' => '(?:01(?:2[5-9]|[4-69]\\d)|4[0-8]|[56]\\d|9[013-9])\\d{6}',
'example' => '0195123456',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '857[58]\\d{4}',
'example' => '85751234',
'posLength' => [
8,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '81\\d{6}',
'example' => '81123456',
'posLength' => [
8,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[24-689]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4 $5',
'leadingDigitsPatterns' => [
'0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BJ extends PhoneMetadata
{
protected const ID = 'BJ';
protected const COUNTRY_CODE = 229;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:01\d|[24-689])\d{7}')
->setPossibleLength([8, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:01(?:2[5-9]|[4-69]\d)|4[0-8]|[56]\d|9[013-9])\d{6}')
->setExampleNumber('0195123456');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2090\d{4}|(?:012\d\d|2(?:02|1[037]|2[45]|3[68]|4\d))\d{5}')
->setExampleNumber('0120211234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[24-689]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4 $5')
->setLeadingDigitsPattern(['0'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('857[58]\d{4}')
->setExampleNumber('85751234')
->setPossibleLength([8]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('81\d{6}')
->setExampleNumber('81123456')
->setPossibleLength([8]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,69 +7,49 @@
* @internal
*/
return [
'id' => 'BL',
'countryCode' => 590,
'generalDesc' => [
'pattern' => '(?:590\\d|7090)\\d{5}|(?:69|80|9\\d)\\d{7}',
'posLength' => [
9,
],
],
'fixedLine' => [
'pattern' => '590(?:2[7-9]|3[3-7]|5[12]|87)\\d{4}',
'example' => '590271234',
],
'mobile' => [
'pattern' => '(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\d)|6(?:1[016-9]|5[0-4]|[67]\\d))|7090[0-4])\\d{4}',
'example' => '690001234',
],
'tollFree' => [
'pattern' => '80[0-5]\\d{6}',
'example' => '800012345',
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '9(?:(?:39[5-7]|76[018])\\d|475[0-5])\\d{4}',
'example' => '976012345',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BL extends PhoneMetadata
{
protected const ID = 'BL';
protected const COUNTRY_CODE = 590;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:590\d|7090)\d{5}|(?:69|80|9\d)\d{7}')
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:69(?:0\d\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\d)|6(?:1[016-9]|5[0-4]|[67]\d))|7090[0-4])\d{4}')
->setExampleNumber('690001234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('590(?:2[7-9]|3[3-7]|5[12]|87)\d{4}')
->setExampleNumber('590271234');
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('80[0-5]\d{6}')
->setExampleNumber('800012345');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:(?:39[5-7]|76[018])\d|475[0-6])\d{4}')
->setExampleNumber('976012345');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,79 +7,56 @@
* @internal
*/
return [
'id' => 'BM',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:441|[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}',
'example' => '4414123456',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '441(?:[2378]\\d|5[0-39]|9[02])\\d{5}',
'example' => '4413701234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([2-9]\\d{6})$|1',
'nationalPrefixTransformRule' => '441$1',
'numberFormat' => [],
'leadingDigits' => '441',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BM extends PhoneMetadata
{
protected const ID = 'BM';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '441';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([2-9]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '441$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:441|[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('441(?:[2378]\d|5[0-39]|9[02])\d{5}')
->setExampleNumber('4413701234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('441(?:[46]\d\d|5(?:4\d|60|89))\d{4}')
->setExampleNumber('4414123456')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,77 +7,52 @@
* @internal
*/
return [
'id' => 'BN',
'countryCode' => 673,
'generalDesc' => [
'pattern' => '[2-578]\\d{6}',
'posLength' => [
7,
],
],
'fixedLine' => [
'pattern' => '22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}',
'example' => '2345678',
],
'mobile' => [
'pattern' => '(?:22[89]|[78]\\d\\d)\\d{4}',
'example' => '7123456',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '5[34]\\d{5}',
'example' => '5345678',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-578]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BN extends PhoneMetadata
{
protected const ID = 'BN';
protected const COUNTRY_CODE = 673;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-578]\d{6}')
->setPossibleLength([7]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:22[89]|[78]\d\d)\d{4}')
->setExampleNumber('7123456');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('22[0-7]\d{4}|(?:2[013-9]|[34]\d|5[0-25-9])\d{5}')
->setExampleNumber('2345678');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-578]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('5[34]\d{5}')
->setExampleNumber('5345678');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,119 +7,78 @@
* @internal
*/
return [
'id' => 'BO',
'countryCode' => 591,
'generalDesc' => [
'pattern' => '8001\\d{5}|(?:[2-467]\\d|50)\\d{6}',
'posLength' => [
8,
9,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}',
'example' => '22123456',
'posLength' => [
8,
],
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '[67]\\d{7}',
'example' => '71234567',
'posLength' => [
8,
],
],
'tollFree' => [
'pattern' => '8001[07]\\d{4}',
'example' => '800171234',
'posLength' => [
9,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '50\\d{6}',
'example' => '50123456',
'posLength' => [
8,
],
'posLengthLocal' => [
7,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '8001[07]\\d{4}',
'posLength' => [
9,
],
],
'internationalPrefix' => '00(?:1\\d)?',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0(1\\d)?',
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[235]|4[46]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d{8})',
'format' => '$1',
'leadingDigitsPatterns' => [
'[67]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BO extends PhoneMetadata
{
protected const ID = 'BO';
protected const COUNTRY_CODE = 591;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0(1\d)?';
protected ?string $internationalPrefix = '00(?:1\d)?';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('8001\d{5}|(?:[2-467]\d|50)\d{6}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('[67]\d{7}')
->setExampleNumber('71234567')
->setPossibleLength([8]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:2\d\d|5(?:11|[258]\d|9[67])|6(?:12|2\d|9[34])|8(?:2[34]|39|62))|3(?:3\d\d|4(?:6\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\d\d|6(?:11|[24689]\d|72)))\d{4}')
->setExampleNumber('22123456')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[235]|4[46]'])
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{8})')
->setFormat('$1')
->setLeadingDigitsPattern(['[67]'])
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['8'])
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8001[07]\d{4}')
->setExampleNumber('800171234')
->setPossibleLength([9]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('50\d{6}')
->setExampleNumber('50123456')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('8001[07]\d{4}')
->setPossibleLength([9]);
}
}
@@ -7,69 +7,43 @@
* @internal
*/
return [
'id' => 'BQ',
'countryCode' => 599,
'generalDesc' => [
'pattern' => '(?:[34]1|7\\d)\\d{5}',
'posLength' => [
7,
],
],
'fixedLine' => [
'pattern' => '(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}',
'example' => '7151234',
],
'mobile' => [
'pattern' => '(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}',
'example' => '3181234',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [],
'leadingDigits' => '[347]',
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BQ extends PhoneMetadata
{
protected const ID = 'BQ';
protected const COUNTRY_CODE = 599;
protected const LEADING_DIGITS = '[347]';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[34]1|7\d)\d{5}')
->setPossibleLength([7]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\d|9[056])\d)\d{3}')
->setExampleNumber('3181234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\d)\d{3}')
->setExampleNumber('7151234');
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,206 +7,131 @@
* @internal
*/
return [
'id' => 'BR',
'countryCode' => 55,
'generalDesc' => [
'pattern' => '(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}',
'posLength' => [
8,
9,
10,
11,
],
],
'fixedLine' => [
'pattern' => '(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}',
'example' => '1123456789',
'posLength' => [
10,
],
'posLengthLocal' => [
8,
],
],
'mobile' => [
'pattern' => '(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}',
'example' => '11961234567',
'posLength' => [
10,
11,
],
'posLengthLocal' => [
8,
9,
],
],
'tollFree' => [
'pattern' => '800\\d{6,7}',
'example' => '800123456',
'posLength' => [
9,
10,
],
],
'premiumRate' => [
'pattern' => '300\\d{6}|[59]00\\d{6,7}',
'example' => '300123456',
'posLength' => [
9,
10,
],
],
'sharedCost' => [
'pattern' => '(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}',
'example' => '40041234',
'posLength' => [
8,
10,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '30(?:0\\d{5,7}|3\\d{7})|40(?:0\\d|20)\\d{4}|800\\d{6,7}',
'posLength' => [
8,
9,
10,
],
],
'internationalPrefix' => '00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?',
'nationalPrefixTransformRule' => '$2',
'numberFormat' => [
[
'pattern' => '(\\d{3,6})',
'format' => '$1',
'leadingDigitsPatterns' => [
'1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'300|4(?:0[02]|37)',
'4(?:02|37)0|[34]00',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[2-57]',
'[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2,3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:[358]|90)0',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0 $CC ($1)',
],
[
'pattern' => '(\\d{2})(\\d{5})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[16][1-9]|[2-57-9]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0 $CC ($1)',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'300|4(?:0[02]|37)',
'4(?:02|37)0|[34]00',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2,3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:[358]|90)0',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0 $CC ($1)',
],
[
'pattern' => '(\\d{2})(\\d{5})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[16][1-9]|[2-57-9]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0 $CC ($1)',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BR extends PhoneMetadata
{
protected const ID = 'BR';
protected const COUNTRY_CODE = 55;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\d{10,11}))?';
protected ?string $internationalPrefix = '00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)';
protected ?string $nationalPrefixTransformRule = '$2';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[1-467]\d{9,10}|55[0-46-9]\d{8}|[34]\d{7}|55\d{7,8}|(?:5[0-46-9]|[89]\d)\d{7,9}')
->setPossibleLength([8, 9, 10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\d)\d{7}')
->setExampleNumber('11961234567')
->setPossibleLengthLocalOnly([8, 9])
->setPossibleLength([10, 11]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('[59]00\d{6,7}')
->setExampleNumber('500123456')
->setPossibleLength([9, 10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\d{7}')
->setExampleNumber('1123456789')
->setPossibleLengthLocalOnly([8])
->setPossibleLength([10]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3,6})')
->setFormat('$1')
->setLeadingDigitsPattern(['1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['300|4(?:0[02]|37|86)', '300|4(?:0(?:0|20)|370|864)'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[2-57]', '[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2,3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:[358]|90)0'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0 $CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{5})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[16][1-9]|[2-57-9]'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0 $CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{6,7}')
->setExampleNumber('800123456')
->setPossibleLength([9, 10]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:30[03]\d{3}|4(?:0(?:0\d|20)|370|864))\d{4}|300\d{5}')
->setExampleNumber('40041234')
->setPossibleLength([8, 10]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:30[03]\d{3}|4(?:0(?:0\d|20)|864))\d{4}|800\d{6,7}|300\d{5}')
->setPossibleLength([8, 9, 10]);
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['300|4(?:0[02]|37|86)', '300|4(?:0(?:0|20)|370|864)'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2,3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:[358]|90)0'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0 $CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{5})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[16][1-9]|[2-57-9]'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0 $CC ($1)')
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,81 +7,59 @@
* @internal
*/
return [
'id' => 'BS',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:242|[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-5]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}',
'example' => '2423456789',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|3[0-4]|[89]9))\\d{4}',
'example' => '2423591234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
'posLengthLocal' => [
7,
],
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '242225\\d{4}',
'example' => '2422250123',
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([3-8]\\d{6})$|1',
'nationalPrefixTransformRule' => '242$1',
'numberFormat' => [],
'leadingDigits' => '242',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BS extends PhoneMetadata
{
protected const ID = 'BS';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '242';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([3-8]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '242$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:242|[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\d|3[0-4]|[89]9))\d{4}')
->setExampleNumber('2423591234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-5]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\d{4}')
->setExampleNumber('2423456789')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('242300\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456')
->setPossibleLengthLocalOnly([7]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('242225\d{4}')
->setExampleNumber('2422250123');
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,129 +7,76 @@
* @internal
*/
return [
'id' => 'BT',
'countryCode' => 975,
'generalDesc' => [
'pattern' => '[17]\\d{7}|[2-8]\\d{6}',
'posLength' => [
7,
8,
],
'posLengthLocal' => [
6,
],
],
'fixedLine' => [
'pattern' => '(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}',
'example' => '2345678',
'posLength' => [
7,
],
'posLengthLocal' => [
6,
],
],
'mobile' => [
'pattern' => '(?:1[67]|77)\\d{6}',
'example' => '17123456',
'posLength' => [
8,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-7]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-68]|7[246]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'1[67]|7',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d)(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-68]|7[246]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'1[67]|7',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BT extends PhoneMetadata
{
protected const ID = 'BT';
protected const COUNTRY_CODE = 975;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[17]\d{7}|[2-8]\d{6}')
->setPossibleLengthLocalOnly([6])
->setPossibleLength([7, 8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1[67]|77)\d{6}')
->setExampleNumber('17123456')
->setPossibleLength([8]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\d{5}')
->setExampleNumber('2345678')
->setPossibleLengthLocalOnly([6])
->setPossibleLength([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-7]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-68]|7[246]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['1[67]|7'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-68]|7[246]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['1[67]|7'])
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,128 +7,81 @@
* @internal
*/
return [
'id' => 'BW',
'countryCode' => 267,
'generalDesc' => [
'pattern' => '(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}',
'posLength' => [
7,
8,
10,
],
],
'fixedLine' => [
'pattern' => '(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013]|81)|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[013467]))\\d{4}',
'example' => '2401234',
'posLength' => [
7,
],
],
'mobile' => [
'pattern' => '(?:321|7[1-8]\\d)\\d{5}',
'example' => '71123456',
'posLength' => [
8,
],
],
'tollFree' => [
'pattern' => '(?:0800|800\\d)\\d{6}',
'example' => '0800012345',
'posLength' => [
10,
],
],
'premiumRate' => [
'pattern' => '90\\d{5}',
'example' => '9012345',
'posLength' => [
7,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '79(?:1(?:[0-2]\\d|3[0-3])|2[0-7]\\d)\\d{3}',
'example' => '79101234',
'posLength' => [
8,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'90',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[24-6]|3[15-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[37]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BW extends PhoneMetadata
{
protected const ID = 'BW';
protected const COUNTRY_CODE = 267;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:0800|(?:[37]|800)\d)\d{6}|(?:[2-6]\d|90)\d{5}')
->setPossibleLength([7, 8, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:321|7[1-8]\d)\d{5}')
->setExampleNumber('71123456')
->setPossibleLength([8]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90\d{5}')
->setExampleNumber('9012345')
->setPossibleLength([7]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\d|7[013]|81)|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[013467]))\d{4}')
->setExampleNumber('2401234')
->setPossibleLength([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['90'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[24-6]|3[15-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[37]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['0'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:0800|800\d)\d{6}')
->setExampleNumber('0800012345')
->setPossibleLength([10]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('79(?:1(?:[0-2]\d|3[0-8])|2[0-7]\d)\d{3}')
->setExampleNumber('79101234')
->setPossibleLength([8]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,148 +7,101 @@
* @internal
*/
return [
'id' => 'BY',
'countryCode' => 375,
'generalDesc' => [
'pattern' => '(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}',
'posLength' => [
6,
7,
8,
9,
10,
11,
],
'posLengthLocal' => [
5,
],
],
'fixedLine' => [
'pattern' => '(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}',
'example' => '152450911',
'posLength' => [
9,
],
'posLengthLocal' => [
5,
6,
7,
],
],
'mobile' => [
'pattern' => '(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}',
'example' => '294911911',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}',
'example' => '8011234567',
],
'premiumRate' => [
'pattern' => '(?:810|902)\\d{7}',
'example' => '9021234567',
'posLength' => [
10,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '249\\d{6}',
'example' => '249123456',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '800\\d{3,7}|(?:8(?:0[13]|10|20\\d)|902)\\d{7}',
],
'internationalPrefix' => '810',
'preferredInternationalPrefix' => '8~10',
'nationalPrefix' => '8',
'nationalPrefixForParsing' => '0|80?',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'800',
],
'nationalPrefixFormattingRule' => '8 $1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'800',
],
'nationalPrefixFormattingRule' => '8 $1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{2})(\\d{3})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])',
'1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])',
],
'nationalPrefixFormattingRule' => '8 0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2-$3-$4',
'leadingDigitsPatterns' => [
'1(?:[56]|7[467])|2[1-3]',
],
'nationalPrefixFormattingRule' => '8 0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2-$3-$4',
'leadingDigitsPatterns' => [
'[1-4]',
],
'nationalPrefixFormattingRule' => '8 0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3,4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[89]',
],
'nationalPrefixFormattingRule' => '8 $1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BY extends PhoneMetadata
{
protected const ID = 'BY';
protected const COUNTRY_CODE = 375;
protected const NATIONAL_PREFIX = '8';
protected ?string $nationalPrefixForParsing = '0|80?';
protected ?string $internationalPrefix = '810';
protected ?string $preferredInternationalPrefix = '8~10';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[12]\d|33|44|902)\d{7}|8(?:0[0-79]\d{5,7}|[1-7]\d{9})|8(?:1[0-489]|[5-79]\d)\d{7}|8[1-79]\d{6,7}|8[0-79]\d{5}|8\d{5}')
->setPossibleLengthLocalOnly([5])
->setPossibleLength([6, 7, 8, 9, 10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:5[5-79]|9[1-9])|(?:33|44)\d)\d{6}')
->setExampleNumber('294911911')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:810|902)\d{7}')
->setExampleNumber('9021234567')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1(?:5(?:1[1-5]|[24]\d|6[2-4]|9[1-7])|6(?:[235]\d|4[1-7])|7\d\d)|2(?:1(?:[246]\d|3[0-35-9]|5[1-9])|2(?:[235]\d|4[0-8])|3(?:[26]\d|3[02-79]|4[024-7]|5[03-7])))\d{5}')
->setExampleNumber('152450911')
->setPossibleLengthLocalOnly([5, 6, 7])
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['800'])
->setNationalPrefixFormattingRule('8 $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['800'])
->setNationalPrefixFormattingRule('8 $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{2})(\d{3})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern([
'1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])',
'1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])',
])
->setNationalPrefixFormattingRule('8 0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2-$3-$4')
->setLeadingDigitsPattern(['1(?:[56]|7[467])|2[1-3]'])
->setNationalPrefixFormattingRule('8 0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2-$3-$4')
->setLeadingDigitsPattern(['[1-4]'])
->setNationalPrefixFormattingRule('8 0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3,4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[89]'])
->setNationalPrefixFormattingRule('8 $1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{3,7}|8(?:0[13]|20\d)\d{7}')
->setExampleNumber('8011234567');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('249\d{6}')
->setExampleNumber('249123456')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{3,7}|(?:8(?:0[13]|10|20\d)|902)\d{7}');
}
}
@@ -7,96 +7,60 @@
* @internal
*/
return [
'id' => 'BZ',
'countryCode' => 501,
'generalDesc' => [
'pattern' => '(?:0800\\d|[2-8])\\d{6}',
'posLength' => [
7,
11,
],
],
'fixedLine' => [
'pattern' => '(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}',
'example' => '2221234',
'posLength' => [
7,
],
],
'mobile' => [
'pattern' => '6[0-35-7]\\d{5}',
'example' => '6221234',
'posLength' => [
7,
],
],
'tollFree' => [
'pattern' => '0800\\d{7}',
'example' => '08001234123',
'posLength' => [
11,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[2-8]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{4})(\\d{3})',
'format' => '$1-$2-$3-$4',
'leadingDigitsPatterns' => [
'0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_BZ extends PhoneMetadata
{
protected const ID = 'BZ';
protected const COUNTRY_CODE = 501;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:0800\d|[2-8])\d{6}')
->setPossibleLength([7, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('6[0-35-7]\d{5}')
->setExampleNumber('6221234')
->setPossibleLength([7]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:[02]\d|36|[68]0)|[3-58](?:[02]\d|[68]0)|7(?:[02]\d|32|[68]0))\d{4}')
->setExampleNumber('2221234')
->setPossibleLength([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[2-8]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})(\d{3})')
->setFormat('$1-$2-$3-$4')
->setLeadingDigitsPattern(['0'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('0800\d{7}')
->setExampleNumber('08001234123')
->setPossibleLength([11]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,95 +7,65 @@
* @internal
*/
return [
'id' => 'CA',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '[2-9]\\d{9}|3\\d{6}',
'posLength' => [
7,
10,
],
],
'fixedLine' => [
'pattern' => '(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\d{6}',
'example' => '5062345678',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\d{6}',
'example' => '5062345678',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
'posLength' => [
10,
],
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
'posLength' => [
10,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:2[125-9]|33|44|66|77|88)|6(?:22|33))[2-9]\\d{6}',
'example' => '5219023456',
'posLength' => [
10,
],
],
'voip' => [
'pattern' => '600[2-9]\\d{6}',
'example' => '6002012345',
'posLength' => [
10,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '310\\d{4}',
'example' => '3101234',
'posLength' => [
7,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '1',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CA extends PhoneMetadata
{
protected const ID = 'CA';
protected const COUNTRY_CODE = 1;
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '1';
protected ?string $internationalPrefix = '011';
protected bool $mobileNumberPortableRegion = true;
protected bool $sameMobileAndFixedLinePattern = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-9]\d{9}|3\d{6}')
->setPossibleLength([7, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\d{6}')
->setExampleNumber('5062345678')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\d{6}')
->setExampleNumber('5062345678')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456')
->setPossibleLength([10]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|(?:5(?:2[125-9]|33|44|66|77|88)|6(?:22|33))[2-9]\d{6}')
->setExampleNumber('5219023456')
->setPossibleLength([10]);
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('600[2-9]\d{6}')
->setExampleNumber('6002012345')
->setPossibleLength([10]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('310\d{4}')
->setExampleNumber('3101234')
->setPossibleLength([7]);
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,98 +7,61 @@
* @internal
*/
return [
'id' => 'CC',
'countryCode' => 61,
'generalDesc' => [
'pattern' => '1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}',
'posLength' => [
6,
7,
8,
9,
10,
12,
],
],
'fixedLine' => [
'pattern' => '8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}',
'example' => '891621234',
'posLength' => [
9,
],
'posLengthLocal' => [
8,
],
],
'mobile' => [
'pattern' => '4(?:79[01]|83[0-389]|94[0-4])\\d{5}|4(?:[0-36]\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\d{6}',
'example' => '412345678',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '180(?:0\\d{3}|2)\\d{3}',
'example' => '1800123456',
'posLength' => [
7,
10,
],
],
'premiumRate' => [
'pattern' => '190[0-26]\\d{6}',
'example' => '1900123456',
'posLength' => [
10,
],
],
'sharedCost' => [
'pattern' => '13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}',
'example' => '1300123456',
'posLength' => [
6,
8,
10,
12,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}',
'example' => '147101234',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011',
'preferredInternationalPrefix' => '0011',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '([59]\\d{7})$|0',
'nationalPrefixTransformRule' => '8$1',
'numberFormat' => [],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CC extends PhoneMetadata
{
protected const ID = 'CC';
protected const COUNTRY_CODE = 61;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '([59]\d{7})$|0';
protected ?string $internationalPrefix = '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011';
protected ?string $preferredInternationalPrefix = '0011';
protected ?string $nationalPrefixTransformRule = '8$1';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:[0-79]\d{8}(?:\d{2})?|8[0-24-9]\d{7})|[148]\d{8}|1\d{5,7}')
->setPossibleLength([6, 7, 8, 9, 10, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4(?:79[01]|83[0-389]|94[0-478])\d{5}|4(?:[0-36]\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-37-9])\d{6}')
->setExampleNumber('412345678')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('190[0-26]\d{6}')
->setExampleNumber('1900123456')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\d|70[23]|959))\d{3}')
->setExampleNumber('891621234')
->setPossibleLengthLocalOnly([8])
->setPossibleLength([9]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('180(?:0\d{3}|2)\d{3}')
->setExampleNumber('1800123456')
->setPossibleLength([7, 10]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('13(?:00\d{6}(?:\d{2})?|45[0-4]\d{3})|13\d{4}')
->setExampleNumber('1300123456')
->setPossibleLength([6, 8, 10, 12]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('14(?:5(?:1[0458]|[23][458])|71\d)\d{4}')
->setExampleNumber('147101234')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,132 +7,84 @@
* @internal
*/
return [
'id' => 'CD',
'countryCode' => 243,
'generalDesc' => [
'pattern' => '(?:(?:[189]|5\\d)\\d|2)\\d{7}|[1-68]\\d{6}',
'posLength' => [
7,
8,
9,
10,
],
],
'fixedLine' => [
'pattern' => '(?:(?:12|573)\\d\\d|276)\\d{5}|[1-6]\\d{6}',
'example' => '1234567',
],
'mobile' => [
'pattern' => '88\\d{5}|(?:8[0-69]|9[017-9])\\d{7}',
'example' => '991234567',
'posLength' => [
7,
9,
],
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'88',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{5})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[1-6]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[89]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'5',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CD extends PhoneMetadata
{
protected const ID = 'CD';
protected const COUNTRY_CODE = 243;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:[189]|5\d)\d|2)\d{7}|[1-68]\d{6}')
->setPossibleLength([7, 8, 9, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('88\d{5}|(?:8[0-69]|9[017-9])\d{7}')
->setExampleNumber('991234567')
->setPossibleLength([7, 9]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:12|573)\d\d|276)\d{5}|[1-6]\d{6}')
->setExampleNumber('1234567');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['88'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{5})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[1-6]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[89]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{3})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['5'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,77 +7,52 @@
* @internal
*/
return [
'id' => 'CF',
'countryCode' => 236,
'generalDesc' => [
'pattern' => '(?:[27]\\d{3}|8776)\\d{4}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '2[12]\\d{6}',
'example' => '21612345',
],
'mobile' => [
'pattern' => '7[024-7]\\d{6}',
'example' => '70012345',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'pattern' => '8776\\d{4}',
'example' => '87761234',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[278]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CF extends PhoneMetadata
{
protected const ID = 'CF';
protected const COUNTRY_CODE = 236;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[27]\d{3}|8776)\d{4}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('7[024-7]\d{6}')
->setExampleNumber('70012345');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('8776\d{4}')
->setExampleNumber('87761234');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2[12]\d{6}')
->setExampleNumber('21612345');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[278]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,86 +7,57 @@
* @internal
*/
return [
'id' => 'CG',
'countryCode' => 242,
'generalDesc' => [
'pattern' => '222\\d{6}|(?:0\\d|80)\\d{7}',
'posLength' => [
9,
],
],
'fixedLine' => [
'pattern' => '222[1-589]\\d{5}',
'example' => '222123456',
],
'mobile' => [
'pattern' => '026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}',
'example' => '061234567',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'pattern' => '80[0-2]\\d{6}',
'example' => '800123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[02]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CG extends PhoneMetadata
{
protected const ID = 'CG';
protected const COUNTRY_CODE = 242;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('222\d{6}|(?:0\d|80)\d{7}')
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('026(?:1[0-5]|6[6-9])\d{4}|0(?:[14-6]\d\d|2(?:40|5[5-8]|6[07-9]))\d{5}')
->setExampleNumber('061234567');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('80[0-2]\d{6}')
->setExampleNumber('800123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('222[1-589]\d{5}')
->setExampleNumber('222123456');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[02]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,120 +7,89 @@
* @internal
*/
return [
'id' => 'CH',
'countryCode' => 41,
'generalDesc' => [
'pattern' => '8\\d{11}|[2-9]\\d{8}',
'posLength' => [
9,
12,
],
],
'fixedLine' => [
'pattern' => '(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}',
'example' => '212345678',
'posLength' => [
9,
],
],
'mobile' => [
'pattern' => '(?:6[89]|7[235-9])\\d{7}',
'example' => '781234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800\\d{6}',
'example' => '800123456',
'posLength' => [
9,
],
],
'premiumRate' => [
'pattern' => '90[016]\\d{6}',
'example' => '900123456',
'posLength' => [
9,
],
],
'sharedCost' => [
'pattern' => '84[0248]\\d{6}',
'example' => '840123456',
'posLength' => [
9,
],
],
'personalNumber' => [
'pattern' => '878\\d{6}',
'example' => '878123456',
'posLength' => [
9,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'pattern' => '74[0248]\\d{6}',
'example' => '740123456',
'posLength' => [
9,
],
],
'uan' => [
'pattern' => '5[18]\\d{7}',
'example' => '581234567',
'posLength' => [
9,
],
],
'voicemail' => [
'pattern' => '860\\d{9}',
'example' => '860123456789',
'posLength' => [
12,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'8[047]|90',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[2-79]|81',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4 $5',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CH extends PhoneMetadata
{
protected const ID = 'CH';
protected const COUNTRY_CODE = 41;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('8\d{11}|[2-9]\d{8}')
->setPossibleLength([9, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:6[89]|7[235-9])\d{7}')
->setExampleNumber('781234567')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90[016]\d{6}')
->setExampleNumber('900123456')
->setPossibleLength([9]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\d{7}')
->setExampleNumber('212345678')
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['8[047]|90'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[2-79]|81'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4 $5')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{6}')
->setExampleNumber('800123456')
->setPossibleLength([9]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('84[0248]\d{6}')
->setExampleNumber('840123456')
->setPossibleLength([9]);
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('878\d{6}')
->setExampleNumber('878123456')
->setPossibleLength([9]);
$this->voip = PhoneNumberDesc::empty();
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('74[0248]\d{6}')
->setExampleNumber('740123456')
->setPossibleLength([9]);
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('5[18]\d{7}')
->setExampleNumber('581234567')
->setPossibleLength([9]);
$this->voicemail = (new PhoneNumberDesc())
->setNationalNumberPattern('860\d{9}')
->setExampleNumber('860123456789')
->setPossibleLength([12]);
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,87 +7,55 @@
* @internal
*/
return [
'id' => 'CI',
'countryCode' => 225,
'generalDesc' => [
'pattern' => '[02]\\d{9}',
'posLength' => [
10,
],
],
'fixedLine' => [
'pattern' => '2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}',
'example' => '2123456789',
],
'mobile' => [
'pattern' => '0[157]\\d{8}',
'example' => '0123456789',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d)(\\d{5})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'2',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CI extends PhoneMetadata
{
protected const ID = 'CI';
protected const COUNTRY_CODE = 225;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[02]\d{9}')
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('0[157]\d{8}')
->setExampleNumber('0123456789');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:[15]\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\d{5}')
->setExampleNumber('2123456789');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d)(\d{5})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['2'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{4})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['0'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,50 @@
* @internal
*/
return [
'id' => 'CK',
'countryCode' => 682,
'generalDesc' => [
'pattern' => '[2-578]\\d{4}',
'posLength' => [
5,
],
],
'fixedLine' => [
'pattern' => '(?:2\\d|3[13-7]|4[1-5])\\d{3}',
'example' => '21234',
],
'mobile' => [
'pattern' => '[578]\\d{4}',
'example' => '71234',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-578]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CK extends PhoneMetadata
{
protected const ID = 'CK';
protected const COUNTRY_CODE = 682;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-578]\d{4}')
->setPossibleLength([5]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('[578]\d{4}')
->setExampleNumber('71234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2\d|3[13-7]|4[1-5])\d{3}')
->setExampleNumber('21234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-578]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,246 +7,162 @@
* @internal
*/
return [
'id' => 'CL',
'countryCode' => 56,
'generalDesc' => [
'pattern' => '12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}',
'posLength' => [
9,
10,
11,
],
],
'fixedLine' => [
'pattern' => '2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[03467]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}',
'example' => '221234567',
'posLength' => [
9,
],
],
'mobile' => [
'pattern' => '2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[03467]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}',
'example' => '221234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '(?:123|8)00\\d{6}',
'example' => '800123456',
'posLength' => [
9,
11,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'pattern' => '600\\d{7,8}',
'example' => '6001234567',
'posLength' => [
10,
11,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '44\\d{7}',
'example' => '441234567',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '600\\d{7,8}',
'posLength' => [
10,
11,
],
],
'internationalPrefix' => '(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0',
'sameMobileAndFixedLinePattern' => true,
'numberFormat' => [
[
'pattern' => '(\\d{4})',
'format' => '$1',
'leadingDigitsPatterns' => [
'1(?:[03-589]|21)|[29]0|78',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'219',
'2196',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'44',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'2[1-36]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9[2-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'60|8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'60',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{5})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'219',
'2196',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'44',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'2[1-36]',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9[2-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'60|8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{2})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'60',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CL extends PhoneMetadata
{
protected const ID = 'CL';
protected const COUNTRY_CODE = 56;
protected ?string $internationalPrefix = '(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('12300\d{6}|6\d{9,10}|[2-9]\d{8}')
->setPossibleLength([9, 10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:1982[0-6]|3314[05-9])\d{3}|(?:2(?:1(?:160|962)|2\d{3}|3(?:(?:2\d|50)\d|3(?:[03467]\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389]|9[0-8])|600)|646[59])|(?:(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57])\d|8(?:0[1-8]|[1-9]\d))\d\d|9(?:(?:10[01]|(?:[2458]\d|7[1-9])\d)\d|3(?:[0-57-9]\d\d|6(?:0[02-9]|[1-9]\d))|6(?:[0-8]\d\d|9(?:[02-79]\d|1[05-9]))|9(?:[03-9]\d\d|1(?:[0235-9]\d|4[0-24-9])|2(?:[0-79]\d|8[0-46-9]))))\d{4}')
->setExampleNumber('221234567')
->setPossibleLength([9]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:1982[0-6]|3314[05-9])\d{3}|(?:2(?:1(?:160|962)|2\d{3}|3(?:(?:2\d|50)\d|3(?:[03467]\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389]|9[0-8])|600)|646[59])|(?:(?:3[2-5]|[47][1-35]|5[1-3578])\d|6(?:00|[13-57]\d)|8(?:0[1-9]|[1-9]\d))\d\d|9(?:(?:10[01]|(?:[2458]\d|7[1-9])\d)\d|3(?:[0-57-9]\d\d|6(?:0[02-9]|[1-9]\d))|6(?:[0-8]\d\d|9(?:[02-79]\d|1[05-9]))|9(?:[03-9]\d\d|1(?:[0235-9]\d|4[0-24-9])|2(?:[0-79]\d|8[0-46-9]))))\d{4}')
->setExampleNumber('600123456')
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})')
->setFormat('$1')
->setLeadingDigitsPattern(['1(?:[03-589]|21)|[29]0|78'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['219', '2196'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['60|809'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['44'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['2[1-36]'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9(?:10|[2-9])'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['60|8'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['60'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:123|8)00\d{6}')
->setExampleNumber('800123456')
->setPossibleLength([9, 11]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('600\d{7,8}')
->setExampleNumber('6001234567')
->setPossibleLength([10, 11]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('44\d{7}')
->setExampleNumber('441234567')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('600\d{7,8}')
->setPossibleLength([10, 11]);
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{5})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['219', '2196'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['60|809'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['44'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['2[1-36]'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9(?:10|[2-9])'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])'])
->setNationalPrefixFormattingRule('($1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['60|8'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{2})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['60'])
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,94 +7,60 @@
* @internal
*/
return [
'id' => 'CM',
'countryCode' => 237,
'generalDesc' => [
'pattern' => '[26]\\d{8}|88\\d{6,7}',
'posLength' => [
8,
9,
],
],
'fixedLine' => [
'pattern' => '2(?:22|33)\\d{6}',
'example' => '222123456',
'posLength' => [
9,
],
],
'mobile' => [
'pattern' => '(?:24[23]|6(?:[25-9]\\d|40))\\d{6}',
'example' => '671234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '88\\d{6,7}',
'example' => '88012345',
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'88',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4 $5',
'leadingDigitsPatterns' => [
'[26]|88',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CM extends PhoneMetadata
{
protected const ID = 'CM';
protected const COUNTRY_CODE = 237;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[26]\d{8}|88\d{6,7}')
->setPossibleLength([8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:24[23]|6(?:[25-9]\d|40))\d{6}')
->setExampleNumber('671234567')
->setPossibleLength([9]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:22|33)\d{6}')
->setExampleNumber('222123456')
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['88'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4 $5')
->setLeadingDigitsPattern(['[26]|88'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('88\d{6,7}')
->setExampleNumber('88012345');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,379 +7,256 @@
* @internal
*/
return [
'id' => 'CN',
'countryCode' => 86,
'generalDesc' => [
'pattern' => '(?:(?:1[03-689]|2\\d)\\d\\d|6)\\d{8}|1\\d{10}|[126]\\d{6}(?:\\d(?:\\d{2})?)?|86\\d{5,6}|(?:[3-579]\\d|8[0-57-9])\\d{5,9}',
'posLength' => [
7,
8,
9,
10,
11,
12,
],
'posLengthLocal' => [
5,
6,
],
],
'fixedLine' => [
'pattern' => '(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|2(?:[02-57-9]\\d{3}|1(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))|(?:41[03]|8078|9(?:78|94))\\d\\d)\\d{5}|(?:10|2[0-57-9])(?:1(?:00|23)\\d\\d|95\\d{3,4})|(?:41[03]|9(?:78|94))(?:100\\d\\d|95\\d{3,4})|8078123|(?:43[35]|754|851)\\d{7,8}|(?:43[35]|754|851)(?:1(?:00\\d|23)\\d|95\\d{3,4})|(?:3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[13-9]\\d{6}|2(?:[0-24-9]\\d{5}|3\\d(?:\\d{4})?))|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[24-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[13-9]\\d{5}|2(?:[0-24-9]\\d{4}|3\\d(?:\\d{3})?))|9(?:[0-46-9]\\d{5}|5\\d{3,5}))',
'example' => '1012345678',
'posLength' => [
7,
8,
9,
10,
11,
],
'posLengthLocal' => [
5,
6,
],
],
'mobile' => [
'pattern' => '1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}',
'example' => '13123456789',
'posLength' => [
11,
],
],
'tollFree' => [
'pattern' => '(?:(?:10|21)8|8)00\\d{7}',
'example' => '8001234567',
'posLength' => [
10,
12,
],
],
'premiumRate' => [
'pattern' => '16[08]\\d{5}',
'example' => '16812345',
'posLength' => [
8,
],
],
'sharedCost' => [
'pattern' => '10(?:10\\d{4}|96\\d{3,4})|400\\d{7}|950\\d{7,8}|(?:2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}',
'example' => '4001234567',
'posLength' => [
7,
8,
9,
10,
11,
],
'posLengthLocal' => [
5,
6,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '(?:(?:10|21)8|[48])00\\d{7}|950\\d{7,8}',
'posLength' => [
10,
11,
12,
],
],
'internationalPrefix' => '00|1(?:[12]\\d|79)\\d\\d00',
'preferredInternationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '(1(?:[12]\\d|79)\\d\\d)|0',
'numberFormat' => [
[
'pattern' => '(\\d{5,6})',
'format' => '$1',
'leadingDigitsPatterns' => [
'1(?:00|2[13])|9[56]',
'1(?:00|2(?:1|39))|9[56]',
'1(?:00|2(?:1|395))|9[56]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5,6})',
'format' => '$1',
'leadingDigitsPatterns' => [
'1(?:0|23)|781|[1-9]12',
'1(?:0|23)|7812|[1-9]123',
'1(?:0|23(?:[0-8]|9[0-46-9]))|78123|[1-9]123',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{5,6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]',
'(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[1-9]',
'1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|[3-9]',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:0(?:[0-689]|7[0-79])|1[01459]|2[0-489]|[46]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'16[08]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{5,6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]',
'(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]',
'85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])',
'85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[1-9]',
'1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[0-8]|9[0-47-9])|6)|[3-9]',
'1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|26|3(?:[0268]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23][0-8])|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:33|85[23]9)[0-46-9]|(?:2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])',
'1(?:0[02-8]|[1-9])|2(?:[0-57-9][0-8]|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:10|2[0-57-9])9[0-47-9]|(?:101|58|85[23]10)[1-9]|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:4|80)0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'10|2(?:[02-57-9]|1[1-9])',
'10|2(?:[02-57-9]|1[1-9])',
'10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{7,8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'80',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[3-578]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1[3-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[12]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{2})(\\d{5,6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]',
'(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{5,6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]',
'(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]',
'85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])',
'85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'(?:4|80)0',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'10|2(?:[02-57-9]|1[1-9])',
'10|2(?:[02-57-9]|1[1-9])',
'10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{7,8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'80',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[3-578]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '$CC $1',
'nationalPrefixOptionalWhenFormatting' => true,
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1[3-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[12]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
'nationalPrefixOptionalWhenFormatting' => true,
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CN extends PhoneMetadata
{
protected const ID = 'CN';
protected const COUNTRY_CODE = 86;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '(1(?:[12]\d|79)\d\d)|0';
protected ?string $internationalPrefix = '00|1(?:[12]\d|79)\d\d00';
protected ?string $preferredInternationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:1[03-689]|2\d)\d\d|6)\d{8}|1\d{10}|[126]\d{6}(?:\d(?:\d{2})?)?|86\d{5,6}|(?:[3-579]\d|8[0-57-9])\d{5,9}')
->setPossibleLengthLocalOnly([5, 6])
->setPossibleLength([7, 8, 9, 10, 11, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('1740[0-5]\d{6}|1(?:[38]\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\d{8}')
->setExampleNumber('13123456789')
->setPossibleLength([11]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('16[08]\d{5}')
->setExampleNumber('16812345')
->setPossibleLength([8]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:10(?:[02-79]\d\d|[18](?:0[1-9]|[1-9]\d))|2(?:[02-57-9]\d{3}|1(?:[18](?:0[1-9]|[1-9]\d)|[2-79]\d\d))|(?:41[03]|8078|9(?:78|94))\d\d)\d{5}|(?:10|2[0-57-9])(?:1(?:00|23)\d\d|95\d{3,4})|(?:41[03]|9(?:78|94))(?:100\d\d|95\d{3,4})|8078123|(?:43[35]|754|851)\d{7,8}|(?:43[35]|754|851)(?:1(?:00\d|23)\d|95\d{3,4})|(?:3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\d{7}|1(?:0(?:0\d\d(?:\d{3})?|[1-9]\d{5})|[13-9]\d{6}|2(?:[0-24-9]\d{5}|3\d(?:\d{4})?))|9(?:[0-46-9]\d{6}|5\d{3}(?:\d(?:\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\d|7[02-68]|9[1-68])|4(?:1[24-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-8]\d{6}|1(?:0(?:0\d\d(?:\d{2})?|[1-9]\d{4})|[13-9]\d{5}|2(?:[0-24-9]\d{4}|3\d(?:\d{3})?))|9(?:[0-46-9]\d{5}|5\d{3,5}))')
->setExampleNumber('1012345678')
->setPossibleLengthLocalOnly([5, 6])
->setPossibleLength([7, 8, 9, 10, 11]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{5,6})')
->setFormat('$1')
->setLeadingDigitsPattern(['1(?:00|2[13])|9[56]', '1(?:00|2(?:1|39))|9[56]', '1(?:00|2(?:1|395))|9[56]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5,6})')
->setFormat('$1')
->setLeadingDigitsPattern(['1(?:0|23)|781|[1-9]12', '1(?:0|23)|7812|[1-9]123', '1(?:0|23(?:[0-8]|9[0-46-9]))|78123|[1-9]123'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{5,6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]',
'(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'[1-9]',
'1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|[3-9]',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))',
'1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:0(?:[0-689]|7[0-79])|1[01459]|2[0-489]|[46]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))',
])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['16[08]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{5,6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]',
'(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))[19]',
'85[23](?:10|95)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:10|9[56])',
'85[23](?:100|95)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:100|9[56])',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'[1-9]',
'1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[0-8]|9[0-47-9])|6)|[3-9]',
'1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|26|3(?:[0268]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23][0-8])|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:33|85[23]9)[0-46-9]|(?:2[0-57-9]|3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])',
'1(?:0[02-8]|[1-9])|2(?:[0-57-9][0-8]|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:10|2[0-57-9])9[0-47-9]|(?:101|58|85[23]10)[1-9]|(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])',
])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:4|80)0'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['10|2(?:[02-57-9]|1[1-9])', '10|2(?:[02-57-9]|1[1-9])', '10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern([
'3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{7,8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['80'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[3-578]'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1[3-9]'])
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[12]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:10|21)8|8)00\d{7}')
->setExampleNumber('8001234567')
->setPossibleLength([10, 12]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('10(?:10\d{4}|96\d{3,4})|400\d{7}|950\d{7,8}|(?:2[0-57-9]|3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))96\d{3,4}')
->setExampleNumber('4001234567')
->setPossibleLengthLocalOnly([5, 6])
->setPossibleLength([7, 8, 9, 10, 11]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:(?:10|21)8|[48])00\d{7}|950\d{7,8}')
->setPossibleLength([10, 11, 12]);
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{5,6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]',
'(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
'10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\d|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{5,6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]',
'(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))[19]',
'85[23](?:10|95)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:10|9[56])',
'85[23](?:100|95)|(?:3(?:[157]\d|35|49|9[1-68])|4(?:[17]\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\d|4[13]|5[1-5]))(?:100|9[56])',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['(?:4|80)0'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['10|2(?:[02-57-9]|1[1-9])', '10|2(?:[02-57-9]|1[1-9])', '10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern([
'3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]',
])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{7,8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['80'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[3-578]'])
->setNationalPrefixFormattingRule('0$1')
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(true),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1[3-9]'])
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[12]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(true),
];
}
}
@@ -7,166 +7,106 @@
* @internal
*/
return [
'id' => 'CO',
'countryCode' => 57,
'generalDesc' => [
'pattern' => '(?:46|60\\d\\d)\\d{6}|(?:1\\d|[39])\\d{9}',
'posLength' => [
8,
10,
11,
],
'posLengthLocal' => [
4,
7,
],
],
'fixedLine' => [
'pattern' => '601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|(?:46|60(?:[124-7][2-9]|8[1-9]))\\d{6}',
'example' => '6012345678',
'posLength' => [
8,
10,
],
'posLengthLocal' => [
4,
7,
],
],
'mobile' => [
'pattern' => '333301[0-5]\\d{3}|3333(?:00|2[5-9]|[3-9]\\d)\\d{4}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}',
'example' => '3211234567',
'posLength' => [
10,
],
],
'tollFree' => [
'pattern' => '1800\\d{7}',
'example' => '18001234567',
'posLength' => [
11,
],
],
'premiumRate' => [
'pattern' => '(?:19(?:0[01]|4[78])|901)\\d{7}',
'example' => '19001234567',
'posLength' => [
10,
11,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00(?:4(?:[14]4|56)|[579])',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0([3579]|4(?:[14]4|56))?',
'numberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'46',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'6|90',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3[0-357]|91',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{7})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'46',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'6|90',
],
'nationalPrefixFormattingRule' => '($1)',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3[0-357]|91',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '0$CC $1',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{7})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CO extends PhoneMetadata
{
protected const ID = 'CO';
protected const COUNTRY_CODE = 57;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0([3579]|4(?:[14]4|56))?';
protected ?string $internationalPrefix = '00(?:4(?:[14]4|56)|[579])';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:46|60\d\d)\d{6}|(?:1\d|[39])\d{9}')
->setPossibleLengthLocalOnly([4, 7])
->setPossibleLength([8, 10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('333301[0-5]\d{3}|3333(?:00|2[5-9]|[3-9]\d)\d{4}|(?:3(?:(?:0[0-5]|1\d|5[01]|70)\d|2(?:[0-3]\d|4[1-9])|3(?:00|3[0-24-9]))|9(?:101|408))\d{6}')
->setExampleNumber('3211234567')
->setPossibleLength([10]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:19(?:0[01]|4[78])|901)\d{7}')
->setExampleNumber('19001234567')
->setPossibleLength([10, 11]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('601055(?:[0-4]\d|50)\d\d|6010(?:[0-4]\d|5[0-4])\d{4}|(?:46|60(?:[18][1-9]|[24-7][2-9]))\d{6}')
->setExampleNumber('6012345678')
->setPossibleLengthLocalOnly([4, 7])
->setPossibleLength([8, 10]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['46'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['6|90'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['3[0-357]|9[14]'])
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{7})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('1800\d{7}')
->setExampleNumber('18001234567')
->setPossibleLength([11]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['46'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['6|90'])
->setNationalPrefixFormattingRule('($1)')
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['3[0-357]|9[14]'])
->setDomesticCarrierCodeFormattingRule('0$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{7})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1']),
];
}
}
@@ -7,101 +7,69 @@
* @internal
*/
return [
'id' => 'CR',
'countryCode' => 506,
'generalDesc' => [
'pattern' => '(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}',
'posLength' => [
8,
10,
],
],
'fixedLine' => [
'pattern' => '210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}',
'example' => '22123456',
'posLength' => [
8,
],
],
'mobile' => [
'pattern' => '(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}',
'example' => '83123456',
'posLength' => [
8,
],
],
'tollFree' => [
'pattern' => '800\\d{7}',
'example' => '8001234567',
'posLength' => [
10,
],
],
'premiumRate' => [
'pattern' => '90[059]\\d{7}',
'example' => '9001234567',
'posLength' => [
10,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '(?:210[0-6]|4\\d{3}|5100)\\d{4}',
'example' => '40001234',
'posLength' => [
8,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefixForParsing' => '(19(?:0[0-2468]|1[09]|20|66|77|99))',
'numberFormat' => [
[
'pattern' => '(\\d{4})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[2-7]|8[3-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'[89]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '$CC $1',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CR extends PhoneMetadata
{
protected const ID = 'CR';
protected const COUNTRY_CODE = 506;
protected ?string $nationalPrefixForParsing = '(19(?:0[0-2468]|1[09]|20|66|77|99))';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:8\d|90)\d{8}|(?:[24-8]\d{3}|3005)\d{4}')
->setPossibleLength([8, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3005\d|6500[01])\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\d{6}')
->setExampleNumber('83123456')
->setPossibleLength([8]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90[059]\d{7}')
->setExampleNumber('9001234567')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('210[7-9]\d{4}|2(?:[024-7]\d|1[1-9])\d{5}')
->setExampleNumber('22123456')
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{4})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[2-7]|8[3-9]'])
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['[89]'])
->setDomesticCarrierCodeFormattingRule('$CC $1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{7}')
->setExampleNumber('8001234567')
->setPossibleLength([10]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:210[0-6]|4\d{3}|5100)\d{4}')
->setExampleNumber('40001234')
->setPossibleLength([8]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,125 +7,80 @@
* @internal
*/
return [
'id' => 'CU',
'countryCode' => 53,
'generalDesc' => [
'pattern' => '(?:[2-7]|8\\d\\d)\\d{7}|[2-47]\\d{6}|[34]\\d{5}',
'posLength' => [
6,
7,
8,
10,
],
'posLengthLocal' => [
4,
5,
],
],
'fixedLine' => [
'pattern' => '(?:3[23]|4[89])\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}',
'example' => '71234567',
'posLengthLocal' => [
4,
5,
],
],
'mobile' => [
'pattern' => '(?:5\\d|6[2-4])\\d{6}',
'example' => '51234567',
'posLength' => [
8,
],
],
'tollFree' => [
'pattern' => '800\\d{7}',
'example' => '8001234567',
'posLength' => [
10,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'pattern' => '807\\d{7}',
'example' => '8071234567',
'posLength' => [
10,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '119',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{4,6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'2[1-4]|[34]',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{6,7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'7',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[56]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CU extends PhoneMetadata
{
protected const ID = 'CU';
protected const COUNTRY_CODE = 53;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '119';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[2-7]|8\d\d)\d{7}|[2-47]\d{6}|[34]\d{5}')
->setPossibleLengthLocalOnly([4, 5])
->setPossibleLength([6, 7, 8, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:5\d|6[2-4])\d{6}')
->setExampleNumber('51234567')
->setPossibleLength([8]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3[23]|4[89])\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\d)\d{6}|(?:2[1-4]|4[1257]|7\d)\d{5,6}')
->setExampleNumber('71234567')
->setPossibleLengthLocalOnly([4, 5]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{4,6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['2[1-4]|[34]'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{6,7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['7'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[56]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{7}')
->setExampleNumber('8001234567')
->setPossibleLength([10]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('807\d{7}')
->setExampleNumber('8071234567')
->setPossibleLength([10]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,76 +7,54 @@
* @internal
*/
return [
'id' => 'CV',
'countryCode' => 238,
'generalDesc' => [
'pattern' => '(?:[2-59]\\d\\d|800)\\d{4}',
'posLength' => [
7,
],
],
'fixedLine' => [
'pattern' => '2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}',
'example' => '2211234',
],
'mobile' => [
'pattern' => '(?:36|5[1-389]|9\\d)\\d{5}',
'example' => '9911234',
],
'tollFree' => [
'pattern' => '800\\d{4}',
'example' => '8001234',
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '(?:3[3-5]|4[356])\\d{5}',
'example' => '3401234',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-589]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CV extends PhoneMetadata
{
protected const ID = 'CV';
protected const COUNTRY_CODE = 238;
protected ?string $internationalPrefix = '0';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[2-59]\d\d|800)\d{4}')
->setPossibleLength([7]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:36|5[1-389]|9\d)\d{5}')
->setExampleNumber('9911234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\d|7[1-3]|8[1-5])\d{4}')
->setExampleNumber('2211234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-589]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{4}')
->setExampleNumber('8001234');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3[3-5]|4[356])\d{5}')
->setExampleNumber('3401234');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,94 +7,63 @@
* @internal
*/
return [
'id' => 'CW',
'countryCode' => 599,
'generalDesc' => [
'pattern' => '(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}',
'posLength' => [
7,
8,
],
],
'fixedLine' => [
'pattern' => '9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}',
'example' => '94351234',
],
'mobile' => [
'pattern' => '953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}',
'example' => '95181234',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'pattern' => '60[0-2]\\d{4}',
'example' => '6001234',
'posLength' => [
7,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'pattern' => '955\\d{5}',
'example' => '95581234',
'posLength' => [
8,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[3467]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9[4-8]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mainCountryForCode' => true,
'leadingDigits' => '[69]',
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CW extends PhoneMetadata
{
protected const ID = 'CW';
protected const COUNTRY_CODE = 599;
protected const LEADING_DIGITS = '[69]';
protected ?string $internationalPrefix = '00';
protected bool $mainCountryForCode = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[34]1|60|(?:7|9\d)\d)\d{5}')
->setPossibleLength([7, 8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('953[01]\d{4}|9(?:5[12467]|6[5-9])\d{5}')
->setExampleNumber('95181234');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:4(?:3[0-5]|4[14]|6\d)|50\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\d|7[01]|8[57-9]))\d{4}')
->setExampleNumber('94351234');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[3467]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9[4-8]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('60[0-2]\d{4}')
->setExampleNumber('6001234')
->setPossibleLength([7]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('955\d{5}')
->setExampleNumber('95581234')
->setPossibleLength([8]);
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,98 +7,61 @@
* @internal
*/
return [
'id' => 'CX',
'countryCode' => 61,
'generalDesc' => [
'pattern' => '1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}',
'posLength' => [
6,
7,
8,
9,
10,
12,
],
],
'fixedLine' => [
'pattern' => '8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}',
'example' => '891641234',
'posLength' => [
9,
],
'posLengthLocal' => [
8,
],
],
'mobile' => [
'pattern' => '4(?:79[01]|83[0-389]|94[0-4])\\d{5}|4(?:[0-36]\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\d{6}',
'example' => '412345678',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '180(?:0\\d{3}|2)\\d{3}',
'example' => '1800123456',
'posLength' => [
7,
10,
],
],
'premiumRate' => [
'pattern' => '190[0-26]\\d{6}',
'example' => '1900123456',
'posLength' => [
10,
],
],
'sharedCost' => [
'pattern' => '13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}',
'example' => '1300123456',
'posLength' => [
6,
8,
10,
12,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}',
'example' => '147101234',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011',
'preferredInternationalPrefix' => '0011',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '([59]\\d{7})$|0',
'nationalPrefixTransformRule' => '8$1',
'numberFormat' => [],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CX extends PhoneMetadata
{
protected const ID = 'CX';
protected const COUNTRY_CODE = 61;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '([59]\d{7})$|0';
protected ?string $internationalPrefix = '001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011';
protected ?string $preferredInternationalPrefix = '0011';
protected ?string $nationalPrefixTransformRule = '8$1';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:[0-79]\d{8}(?:\d{2})?|8[0-24-9]\d{7})|[148]\d{8}|1\d{5,7}')
->setPossibleLength([6, 7, 8, 9, 10, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('4(?:79[01]|83[0-389]|94[0-478])\d{5}|4(?:[0-36]\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-37-9])\d{6}')
->setExampleNumber('412345678')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('190[0-26]\d{6}')
->setExampleNumber('1900123456')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\d|7(?:0[01]|1[0-2])|958))\d{3}')
->setExampleNumber('891641234')
->setPossibleLengthLocalOnly([8])
->setPossibleLength([9]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('180(?:0\d{3}|2)\d{3}')
->setExampleNumber('1800123456')
->setPossibleLength([7, 10]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('13(?:00\d{6}(?:\d{2})?|45[0-4]\d{3})|13\d{4}')
->setExampleNumber('1300123456')
->setPossibleLength([6, 8, 10, 12]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('14(?:5(?:1[0458]|[23][458])|71\d)\d{4}')
->setExampleNumber('147101234')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,74 +7,61 @@
* @internal
*/
return [
'id' => 'CY',
'countryCode' => 357,
'generalDesc' => [
'pattern' => '(?:[279]\\d|[58]0)\\d{6}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '2[2-6]\\d{6}',
'example' => '22345678',
],
'mobile' => [
'pattern' => '9(?:10|[4-79]\\d)\\d{5}',
'example' => '96123456',
],
'tollFree' => [
'pattern' => '800\\d{5}',
'example' => '80001234',
],
'premiumRate' => [
'pattern' => '90[09]\\d{5}',
'example' => '90012345',
],
'sharedCost' => [
'pattern' => '80[1-9]\\d{5}',
'example' => '80112345',
],
'personalNumber' => [
'pattern' => '700\\d{5}',
'example' => '70012345',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '(?:50|77)\\d{6}',
'example' => '77123456',
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[257-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CY extends PhoneMetadata
{
protected const ID = 'CY';
protected const COUNTRY_CODE = 357;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[279]\d|[58]0)\d{6}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:10|[4-79]\d)\d{5}')
->setExampleNumber('96123456');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90[09]\d{5}')
->setExampleNumber('90012345');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2[2-6]\d{6}')
->setExampleNumber('22345678');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[257-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{5}')
->setExampleNumber('80001234');
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('80[1-9]\d{5}')
->setExampleNumber('80112345');
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('700\d{5}')
->setExampleNumber('70012345');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:50|77)\d{6}')
->setExampleNumber('77123456');
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,126 +7,88 @@
* @internal
*/
return [
'id' => 'CZ',
'countryCode' => 420,
'generalDesc' => [
'pattern' => '(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}',
'posLength' => [
9,
10,
11,
12,
],
],
'fixedLine' => [
'pattern' => '(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}',
'example' => '212345678',
'posLength' => [
9,
],
],
'mobile' => [
'pattern' => '(?:60[1-8]\\d|7(?:0(?:[2-5]\\d|60)|19[0-2]|[2379]\\d\\d))\\d{5}',
'example' => '601123456',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800\\d{6}',
'example' => '800123456',
'posLength' => [
9,
],
],
'premiumRate' => [
'pattern' => '9(?:0[05689]|76)\\d{6}',
'example' => '900123456',
'posLength' => [
9,
],
],
'sharedCost' => [
'pattern' => '8[134]\\d{7}',
'example' => '811234567',
'posLength' => [
9,
],
],
'personalNumber' => [
'pattern' => '70[01]\\d{6}',
'example' => '700123456',
'posLength' => [
9,
],
],
'voip' => [
'pattern' => '9[17]0\\d{6}',
'example' => '910123456',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'pattern' => '9(?:5\\d|7[2-4])\\d{6}',
'example' => '972123456',
'posLength' => [
9,
],
],
'voicemail' => [
'pattern' => '9(?:3\\d{9}|6\\d{7,10})',
'example' => '93123456789',
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[2-8]|9[015-7]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'96',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_CZ extends PhoneMetadata
{
protected const ID = 'CZ';
protected const COUNTRY_CODE = 420;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[2-578]\d|60)\d{7}|9\d{8,11}')
->setPossibleLength([9, 10, 11, 12]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:60[1-8]\d|7(?:0(?:[2-5]\d|60)|19[0-4]|[2379]\d\d))\d{5}')
->setExampleNumber('601123456')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:0[05689]|76)\d{6}')
->setExampleNumber('900123456')
->setPossibleLength([9]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2\d|3[1257-9]|4[16-9]|5[13-9])\d{7}')
->setExampleNumber('212345678')
->setPossibleLength([9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[2-8]|9[015-7]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['96'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{3})(\d{3})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{6}')
->setExampleNumber('800123456')
->setPossibleLength([9]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('8[134]\d{7}')
->setExampleNumber('811234567')
->setPossibleLength([9]);
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('70[01]\d{6}')
->setExampleNumber('700123456')
->setPossibleLength([9]);
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('9[17]0\d{6}')
->setExampleNumber('910123456')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:5\d|7[2-4])\d{6}')
->setExampleNumber('972123456')
->setPossibleLength([9]);
$this->voicemail = (new PhoneNumberDesc())
->setNationalNumberPattern('9(?:3\d{9}|6\d{7,10})')
->setExampleNumber('93123456789');
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,320 +7,187 @@
* @internal
*/
return [
'id' => 'DE',
'countryCode' => 49,
'generalDesc' => [
'pattern' => '[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}',
'posLength' => [
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
],
'posLengthLocal' => [
2,
3,
],
],
'fixedLine' => [
'pattern' => '32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}',
'example' => '30123456',
'posLength' => [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
],
'posLengthLocal' => [
2,
3,
4,
],
],
'mobile' => [
'pattern' => '1(?:(?:5(?:[0-25-9]\\d\\d|310)|76\\d\\d)\\d{6}|6[023]\\d{7,8})|17\\d{8}',
'example' => '15123456789',
'posLength' => [
10,
11,
],
],
'tollFree' => [
'pattern' => '800\\d{7,12}',
'example' => '8001234567890',
'posLength' => [
10,
11,
12,
13,
14,
15,
],
],
'premiumRate' => [
'pattern' => '(?:137[7-9]|900(?:[135]|9\\d))\\d{6}',
'example' => '9001234567',
'posLength' => [
10,
11,
],
],
'sharedCost' => [
'pattern' => '180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}',
'example' => '18012345',
'posLength' => [
7,
8,
9,
10,
11,
12,
13,
14,
],
],
'personalNumber' => [
'pattern' => '700\\d{8}',
'example' => '70012345678',
'posLength' => [
11,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'pattern' => '16(?:4\\d{1,10}|[89]\\d{1,11})',
'example' => '16412345',
'posLength' => [
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
],
],
'uan' => [
'pattern' => '18(?:1\\d{5,11}|[2-9]\\d{8})',
'example' => '18500123456',
'posLength' => [
8,
9,
10,
11,
12,
13,
14,
],
],
'voicemail' => [
'pattern' => '1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\d{7,8}|15(?:(?:[03-68]00|113)\\d|2\\d55|7\\d99|9\\d33)\\d{7}',
'example' => '177991234567',
'posLength' => [
12,
13,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{3,13})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3[02]|40|[68]9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3,12})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1',
'2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{2,11})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]',
'[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'138',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5})(\\d{2,10})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'3',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{5,11})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'181',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d)(\\d{4,10})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1(?:3|80)|9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{7,8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1[67]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{7,12})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'185',
'1850',
'18500',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{4})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'7',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'18[68]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'15[1279]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{5})(\\d{6})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'15[03568]',
'15(?:[0568]|31)',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'18',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{7,8})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1(?:6[023]|7)',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{2})(\\d{7})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'15[279]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{8})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'15',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DE extends PhoneMetadata
{
protected const ID = 'DE';
protected const COUNTRY_CODE = 49;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2579]\d{5,14}|49(?:[34]0|69|8\d)\d\d?|49(?:37|49|60|7[089]|9\d)\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\d{1,8}|(?:1|[368]\d|4[0-8])\d{3,13}|49(?:[015]\d|2[13]|31|[46][1-8])\d{1,9}')
->setPossibleLengthLocalOnly([2, 3])
->setPossibleLength([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('15310\d{6}|1(?:5[0-25-9]\d|7[013-5])\d{7}|1(?:6[023]|7[26-9])\d{7,8}')
->setExampleNumber('15123456789')
->setPossibleLength([10, 11]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:137[7-9]|900(?:[135]|9\d))\d{6}')
->setExampleNumber('9001234567')
->setPossibleLength([10, 11]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('32\d{9,11}|49[1-6]\d{10}|322\d{6}|49[0-7]\d{3,9}|(?:[34]0|[68]9)\d{3,13}|(?:2(?:0[1-689]|[1-3569]\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\d|[589][0-7]|6[0-8]|7[0-467]))\d{3,12}')
->setExampleNumber('30123456')
->setPossibleLengthLocalOnly([2, 3, 4])
->setPossibleLength([5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{3,13})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['3[02]|40|[68]9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3,12})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1',
'2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{2,11})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]',
'[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]',
])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['138'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5})(\d{2,10})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['3'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{5,11})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['181'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d)(\d{4,10})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1(?:3|80)|9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7,8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1[67]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{7,12})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['185', '1850', '18500'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{4})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['7'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['18[68]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['15[1279]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{5})(\d{6})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['15[03568]', '15(?:[0568]|31)'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['18'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{7,8})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1(?:6[023]|7)'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{2})(\d{7})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['15[279]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{8})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['15'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{7,12}')
->setExampleNumber('8001234567890')
->setPossibleLength([10, 11, 12, 13, 14, 15]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('180\d{5,11}|13(?:7[1-6]\d\d|8)\d{4}')
->setExampleNumber('18012345')
->setPossibleLength([7, 8, 9, 10, 11, 12, 13, 14]);
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('700\d{8}')
->setExampleNumber('70012345678')
->setPossibleLength([11]);
$this->voip = PhoneNumberDesc::empty();
$this->pager = (new PhoneNumberDesc())
->setNationalNumberPattern('16(?:4\d{1,10}|[89]\d{1,11})')
->setExampleNumber('16412345')
->setPossibleLength([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
$this->uan = (new PhoneNumberDesc())
->setNationalNumberPattern('18(?:1\d{5,11}|[2-9]\d{8})')
->setExampleNumber('18500123456')
->setPossibleLength([8, 9, 10, 11, 12, 13, 14]);
$this->voicemail = (new PhoneNumberDesc())
->setNationalNumberPattern('1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\d{7,8}|15(?:(?:[03-68]00|113)\d|2\d55|7\d99|9\d33)\d{7}')
->setExampleNumber('177991234567')
->setPossibleLength([12, 13]);
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,50 @@
* @internal
*/
return [
'id' => 'DJ',
'countryCode' => 253,
'generalDesc' => [
'pattern' => '(?:2\\d|77)\\d{6}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '2(?:1[2-5]|7[45])\\d{5}',
'example' => '21360003',
],
'mobile' => [
'pattern' => '77\\d{6}',
'example' => '77831001',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[27]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DJ extends PhoneMetadata
{
protected const ID = 'DJ';
protected const COUNTRY_CODE = 253;
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2\d|77)\d{6}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('77\d{6}')
->setExampleNumber('77831001');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('2(?:1[2-5]|7[45])\d{5}')
->setExampleNumber('21360003');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[27]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,77 +7,55 @@
* @internal
*/
return [
'id' => 'DK',
'countryCode' => 45,
'generalDesc' => [
'pattern' => '[2-9]\\d{7}',
'posLength' => [
8,
],
],
'fixedLine' => [
'pattern' => '(?:2(?:[0-59][1-9]|[6-8]\\d)|3(?:[0-3][1-9]|4[13]|5[1-58]|6[1347-9]|7\\d|8[1-8]|9[1-79])|4(?:[0-25][1-9]|[34][2-9]|6[13-579]|7[13579]|8[1-47]|9[127])|5(?:[0-36][1-9]|4[146-9]|5[3-57-9]|7[568]|8[1-358]|9[1-69])|6(?:[0135][1-9]|2[1-68]|4[2-8]|6[1689]|[78]\\d|9[15689])|7(?:[0-69][1-9]|7[3-9]|8[147])|8(?:[16-9][1-9]|2[1-58])|9(?:[1-47-9][1-9]|6\\d))\\d{5}',
'example' => '32123456',
],
'mobile' => [
'pattern' => '(?:2[6-8]|37|6[78]|96)\\d{6}|(?:2[0-59]|3[0-689]|[457]\\d|6[0-69]|8[126-9]|9[1-47-9])[1-9]\\d{5}',
'example' => '34412345',
],
'tollFree' => [
'pattern' => '80\\d{6}',
'example' => '80123456',
],
'premiumRate' => [
'pattern' => '90\\d{6}',
'example' => '90123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[2-9]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DK extends PhoneMetadata
{
protected const ID = 'DK';
protected const COUNTRY_CODE = 45;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-9]\d{7}')
->setPossibleLength([8]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2[6-8]|37|6[78]|96)\d{6}|(?:2[0-59]|3[0-689]|[457]\d|6[0-69]|8[126-9]|9[1-47-9])[1-9]\d{5}')
->setExampleNumber('34412345');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('90\d{6}')
->setExampleNumber('90123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:2(?:[0-59][1-9]|[6-8]\d)|3(?:[0-3][1-9]|4[13]|5[1-58]|6[1347-9]|7\d|8[1-8]|9[1-79])|4(?:[0-25][1-9]|[34][2-9]|6[13-579]|7[13579]|8[1-47]|9[127])|5(?:[0-36][1-9]|4[146-9]|5[3-57-9]|7[568]|8[1-358]|9[1-69])|6(?:[0135][1-9]|2[1-68]|4[2-8]|6[1689]|[78]\d|9[15689])|7(?:[0-69][1-9]|7[3-9]|8[147])|8(?:[16-9][1-9]|2[1-58])|9(?:[1-47-9][1-9]|6\d))\d{5}')
->setExampleNumber('32123456');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[2-9]'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('80\d{6}')
->setExampleNumber('80123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,79 +7,56 @@
* @internal
*/
return [
'id' => 'DM',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:[58]\\d\\d|767|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}',
'example' => '7674201234',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}',
'example' => '7672251234',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '([2-7]\\d{6})$|1',
'nationalPrefixTransformRule' => '767$1',
'numberFormat' => [],
'leadingDigits' => '767',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DM extends PhoneMetadata
{
protected const ID = 'DM';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '767';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '([2-7]\d{6})$|1';
protected ?string $internationalPrefix = '011';
protected ?string $nationalPrefixTransformRule = '767$1';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[58]\d\d|767|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\d{4}')
->setExampleNumber('7672251234')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\d{4}')
->setExampleNumber('7674201234')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:00|33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,78 +7,55 @@
* @internal
*/
return [
'id' => 'DO',
'countryCode' => 1,
'generalDesc' => [
'pattern' => '(?:[58]\\d\\d|900)\\d{7}',
'posLength' => [
10,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}',
'example' => '8092345678',
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '8[024]9[2-9]\\d{6}',
'example' => '8092345678',
'posLengthLocal' => [
7,
],
],
'tollFree' => [
'pattern' => '8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}',
'example' => '8002123456',
],
'premiumRate' => [
'pattern' => '900[2-9]\\d{6}',
'example' => '9002123456',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\d{6}',
'example' => '5002345678',
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '011',
'nationalPrefix' => '1',
'nationalPrefixForParsing' => '1',
'numberFormat' => [],
'leadingDigits' => '8001|8[024]9',
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DO extends PhoneMetadata
{
protected const ID = 'DO';
protected const COUNTRY_CODE = 1;
protected const LEADING_DIGITS = '8001|8[024]9';
protected const NATIONAL_PREFIX = '1';
protected ?string $nationalPrefixForParsing = '1';
protected ?string $internationalPrefix = '011';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[58]\d\d|900)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('8[024]9[2-9]\d{6}')
->setExampleNumber('8092345678')
->setPossibleLengthLocalOnly([7]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900[2-9]\d{6}')
->setExampleNumber('9002123456');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('8(?:[04]9[2-9]\d\d|29(?:2(?:[0-59]\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\d|4[7-9])|[45]\d\d|6(?:[0-27-9]\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\d{4}')
->setExampleNumber('8092345678')
->setPossibleLengthLocalOnly([7]);
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800(?:14|[2-9]\d)\d{5}|8[024]9[01]\d{6}|8(?:33|44|55|66|77|88)[2-9]\d{6}')
->setExampleNumber('8002123456');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('52(?:3(?:[2-46-9][02-9]\d|5(?:[02-46-9]\d|5[0-46-9]))|4(?:[2-478][02-9]\d|5(?:[034]\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\d)|9(?:[05-9]\d|2[0-5]|49)))\d{4}|52[34][2-9]1[02-9]\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\d{6}')
->setExampleNumber('5002345678');
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,110 +7,78 @@
* @internal
*/
return [
'id' => 'DZ',
'countryCode' => 213,
'generalDesc' => [
'pattern' => '(?:[1-4]|[5-79]\\d|80)\\d{7}',
'posLength' => [
8,
9,
],
],
'fixedLine' => [
'pattern' => '9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}',
'example' => '12345678',
],
'mobile' => [
'pattern' => '(?:5(?:4[0-29]|5\\d|6[0-3])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}',
'example' => '551234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '800\\d{6}',
'example' => '800123456',
'posLength' => [
9,
],
],
'premiumRate' => [
'pattern' => '80[3-689]1\\d{5}',
'example' => '808123456',
'posLength' => [
9,
],
],
'sharedCost' => [
'pattern' => '80[12]1\\d{5}',
'example' => '801123456',
'posLength' => [
9,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '98[23]\\d{6}',
'example' => '983123456',
'posLength' => [
9,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[1-4]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})',
'format' => '$1 $2 $3 $4',
'leadingDigitsPatterns' => [
'[5-8]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_DZ extends PhoneMetadata
{
protected const ID = 'DZ';
protected const COUNTRY_CODE = 213;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:[1-4]|[5-79]\d|80)\d{7}')
->setPossibleLength([8, 9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:5(?:4[0-29]|5\d|6[0-3])|6(?:[569]\d|7[0-6])|7[7-9]\d)\d{6}')
->setExampleNumber('551234567')
->setPossibleLength([9]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('80[3-689]1\d{5}')
->setExampleNumber('808123456')
->setPossibleLength([9]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('9619\d{5}|(?:1\d|2[013-79]|3[0-8]|4[013-689])\d{6}')
->setExampleNumber('12345678');
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[1-4]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{2})(\d{2})(\d{2})')
->setFormat('$1 $2 $3 $4')
->setLeadingDigitsPattern(['[5-8]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{6}')
->setExampleNumber('800123456')
->setPossibleLength([9]);
$this->sharedCost = (new PhoneNumberDesc())
->setNationalNumberPattern('80[12]1\d{5}')
->setExampleNumber('801123456')
->setPossibleLength([9]);
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('98[23]\d{6}')
->setExampleNumber('983123456')
->setPossibleLength([9]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,155 +7,97 @@
* @internal
*/
return [
'id' => 'EC',
'countryCode' => 593,
'generalDesc' => [
'pattern' => '1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}',
'posLength' => [
8,
9,
10,
11,
],
'posLengthLocal' => [
7,
],
],
'fixedLine' => [
'pattern' => '[2-7][2-7]\\d{6}',
'example' => '22123456',
'posLength' => [
8,
],
'posLengthLocal' => [
7,
],
],
'mobile' => [
'pattern' => '964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}',
'example' => '991234567',
'posLength' => [
9,
],
],
'tollFree' => [
'pattern' => '1800\\d{7}|1[78]00\\d{6}',
'example' => '18001234567',
'posLength' => [
10,
11,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '[2-7]890\\d{4}',
'example' => '28901234',
'posLength' => [
8,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1-$2',
'leadingDigitsPatterns' => [
'[2-7]',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d)(\\d{3})(\\d{4})',
'format' => '$1 $2-$3',
'leadingDigitsPatterns' => [
'[2-7]',
],
'nationalPrefixFormattingRule' => '(0$1)',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'intlNumberFormat' => [
[
'pattern' => '(\\d)(\\d{3})(\\d{4})',
'format' => '$1-$2-$3',
'leadingDigitsPatterns' => [
'[2-7]',
],
],
[
'pattern' => '(\\d{2})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'9',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3,4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_EC extends PhoneMetadata
{
protected const ID = 'EC';
protected const COUNTRY_CODE = 593;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('1\d{9,10}|(?:[2-7]|9\d)\d{7}')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8, 9, 10, 11]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('964[0-2]\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\d)\d{6}')
->setExampleNumber('991234567')
->setPossibleLength([9]);
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-7][2-7]\d{6}')
->setExampleNumber('22123456')
->setPossibleLengthLocalOnly([7])
->setPossibleLength([8]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1-$2')
->setLeadingDigitsPattern(['[2-7]'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})')
->setFormat('$1 $2-$3')
->setLeadingDigitsPattern(['[2-7]'])
->setNationalPrefixFormattingRule('(0$1)')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('1800\d{7}|1[78]00\d{6}')
->setExampleNumber('18001234567')
->setPossibleLength([10, 11]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('[2-7]890\d{4}')
->setExampleNumber('28901234')
->setPossibleLength([8]);
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
$this->intlNumberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{4})')
->setFormat('$1-$2-$3')
->setLeadingDigitsPattern(['[2-7]']),
(new NumberFormat())
->setPattern('(\d{2})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['9'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3,4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixOptionalWhenFormatting(false),
];
}
}
@@ -7,122 +7,81 @@
* @internal
*/
return [
'id' => 'EE',
'countryCode' => 372,
'generalDesc' => [
'pattern' => '8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}',
'posLength' => [
7,
8,
10,
],
],
'fixedLine' => [
'pattern' => '(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}',
'example' => '3212345',
'posLength' => [
7,
],
],
'mobile' => [
'pattern' => '(?:5\\d{5}|8(?:1(?:0(?:0(?:00|[178]\\d)|[3-9]\\d\\d)|(?:1(?:0[2-6]|1\\d)|(?:2[0-59]|[3-79]\\d)\\d)\\d)|2(?:0(?:0(?:00|4\\d)|(?:19|[2-7]\\d)\\d)|(?:(?:[124-69]\\d|3[5-9])\\d|7(?:[0-79]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}',
'example' => '51234567',
'posLength' => [
7,
8,
],
],
'tollFree' => [
'pattern' => '800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}',
'example' => '80012345',
],
'premiumRate' => [
'pattern' => '(?:40\\d\\d|900)\\d{4}',
'example' => '9001234',
'posLength' => [
7,
8,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'pattern' => '70[0-2]\\d{5}',
'example' => '70012345',
'posLength' => [
8,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'pattern' => '800[2-9]\\d{3}',
'posLength' => [
7,
],
],
'internationalPrefix' => '00',
'numberFormat' => [
[
'pattern' => '(\\d{3})(\\d{4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88',
'[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3,4})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[45]|8(?:00|[1-49])',
'[45]|8(?:00[1-9]|[1-49])',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{2})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'7',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{4})(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'8',
],
'nationalPrefixFormattingRule' => '',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_EE extends PhoneMetadata
{
protected const ID = 'EE';
protected const COUNTRY_CODE = 372;
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('8\d{9}|[4578]\d{7}|(?:[3-8]\d|90)\d{5}')
->setPossibleLength([7, 8, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:5\d{5}|8(?:1(?:0(?:0(?:00|[178]\d)|[3-9]\d\d)|(?:1(?:0[2-6]|1\d)|(?:2[0-59]|[3-79]\d)\d)\d)|2(?:0(?:0(?:00|4\d)|(?:19|[2-7]\d)\d)|(?:(?:[124-69]\d|3[5-9])\d|7(?:[0-79]\d|8[13-9])|8(?:[2-6]\d|7[01]))\d)|[349]\d{4}))\d\d|5(?:(?:[02]\d|5[0-478])\d|1(?:[0-8]\d|95)|6(?:4[0-4]|5[1-589]))\d{3}')
->setExampleNumber('51234567')
->setPossibleLength([7, 8]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:40\d\d|900)\d{4}')
->setExampleNumber('9001234')
->setPossibleLength([7, 8]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:3[23589]|4[3-8]|6\d|7[1-9]|88)\d{5}')
->setExampleNumber('3212345')
->setPossibleLength([7]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d{3})(\d{4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern([
'[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88',
'[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88',
])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3,4})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[45]|8(?:00|[1-49])', '[45]|8(?:00[1-9]|[1-49])'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{2})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['7'])
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{4})(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['8'])
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800(?:(?:0\d\d|1)\d|[2-9])\d{3}')
->setExampleNumber('80012345');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = (new PhoneNumberDesc())
->setNationalNumberPattern('70[0-2]\d{5}')
->setExampleNumber('70012345')
->setPossibleLength([8]);
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = (new PhoneNumberDesc())
->setNationalNumberPattern('800[2-9]\d{3}')
->setPossibleLength([7]);
}
}
@@ -7,129 +7,82 @@
* @internal
*/
return [
'id' => 'EG',
'countryCode' => 20,
'generalDesc' => [
'pattern' => '[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}',
'posLength' => [
8,
9,
10,
],
'posLengthLocal' => [
6,
7,
],
],
'fixedLine' => [
'pattern' => '13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2\\d|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}',
'example' => '234567890',
'posLength' => [
8,
9,
],
'posLengthLocal' => [
6,
7,
],
],
'mobile' => [
'pattern' => '1[0-25]\\d{8}',
'example' => '1001234567',
'posLength' => [
10,
],
],
'tollFree' => [
'pattern' => '800\\d{7}',
'example' => '8001234567',
'posLength' => [
10,
],
],
'premiumRate' => [
'pattern' => '900\\d{7}',
'example' => '9001234567',
'posLength' => [
10,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{7,8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'[23]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{6,7})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1[35]|[4-6]|8[2468]|9[235-7]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[89]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
[
'pattern' => '(\\d{2})(\\d{8})',
'format' => '$1 $2',
'leadingDigitsPatterns' => [
'1',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
'mobileNumberPortableRegion' => true,
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_EG extends PhoneMetadata
{
protected const ID = 'EG';
protected const COUNTRY_CODE = 20;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
protected bool $mobileNumberPortableRegion = true;
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[189]\d{8,9}|[24-6]\d{8}|[135]\d{7}')
->setPossibleLengthLocalOnly([6, 7])
->setPossibleLength([8, 9, 10]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('1[0-25]\d{8}')
->setExampleNumber('1001234567')
->setPossibleLength([10]);
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('900\d{7}')
->setExampleNumber('9001234567')
->setPossibleLength([10]);
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('13[23]\d{6}|(?:15|57)\d{6,7}|(?:2\d|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\d{7}')
->setExampleNumber('234567890')
->setPossibleLengthLocalOnly([6, 7])
->setPossibleLength([8, 9]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{7,8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['[23]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{6,7})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1[35]|[4-6]|8[2468]|9[235-7]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{3})(\d{3})(\d{4})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[89]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
(new NumberFormat())
->setPattern('(\d{2})(\d{8})')
->setFormat('$1 $2')
->setLeadingDigitsPattern(['1'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('800\d{7}')
->setExampleNumber('8001234567')
->setPossibleLength([10]);
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,68 +7,51 @@
* @internal
*/
return [
'id' => 'EH',
'countryCode' => 212,
'generalDesc' => [
'pattern' => '[5-8]\\d{8}',
'posLength' => [
9,
],
],
'fixedLine' => [
'pattern' => '528[89]\\d{5}',
'example' => '528812345',
],
'mobile' => [
'pattern' => '(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[0167]\\d|2[0-467]|5[0-3]|8[0-5]))\\d{6}',
'example' => '650123456',
],
'tollFree' => [
'pattern' => '80[0-7]\\d{6}',
'example' => '801234567',
],
'premiumRate' => [
'pattern' => '89\\d{7}',
'example' => '891234567',
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'pattern' => '(?:592(?:4[0-2]|93)|80[89]\\d\\d)\\d{4}',
'example' => '592401234',
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [],
'leadingDigits' => '528[89]',
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_EH extends PhoneMetadata
{
protected const ID = 'EH';
protected const COUNTRY_CODE = 212;
protected const LEADING_DIGITS = '528[89]';
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[5-8]\d{8}')
->setPossibleLength([9]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:6(?:[0-79]\d|8[0-247-9])|7(?:[0167]\d|2[0-8]|5[0-5]|8[0-7]))\d{6}')
->setExampleNumber('650123456');
$this->premiumRate = (new PhoneNumberDesc())
->setNationalNumberPattern('89\d{7}')
->setExampleNumber('891234567');
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('528[89]\d{5}')
->setExampleNumber('528812345');
$this->tollFree = (new PhoneNumberDesc())
->setNationalNumberPattern('80[0-7]\d{6}')
->setExampleNumber('801234567');
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:592(?:4[0-2]|93)|80[89]\d\d)\d{4}')
->setExampleNumber('592401234');
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}
@@ -7,86 +7,55 @@
* @internal
*/
return [
'id' => 'ER',
'countryCode' => 291,
'generalDesc' => [
'pattern' => '[178]\\d{6}',
'posLength' => [
7,
],
'posLengthLocal' => [
6,
],
],
'fixedLine' => [
'pattern' => '(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}',
'example' => '8370362',
'posLengthLocal' => [
6,
],
],
'mobile' => [
'pattern' => '(?:17[1-3]|7\\d\\d)\\d{4}',
'example' => '7123456',
],
'tollFree' => [
'posLength' => [
-1,
],
],
'premiumRate' => [
'posLength' => [
-1,
],
],
'sharedCost' => [
'posLength' => [
-1,
],
],
'personalNumber' => [
'posLength' => [
-1,
],
],
'voip' => [
'posLength' => [
-1,
],
],
'pager' => [
'posLength' => [
-1,
],
],
'uan' => [
'posLength' => [
-1,
],
],
'voicemail' => [
'posLength' => [
-1,
],
],
'noInternationalDialling' => [
'posLength' => [
-1,
],
],
'internationalPrefix' => '00',
'nationalPrefix' => '0',
'nationalPrefixForParsing' => '0',
'numberFormat' => [
[
'pattern' => '(\\d)(\\d{3})(\\d{3})',
'format' => '$1 $2 $3',
'leadingDigitsPatterns' => [
'[178]',
],
'nationalPrefixFormattingRule' => '0$1',
'domesticCarrierCodeFormattingRule' => '',
],
],
];
declare(strict_types=1);
namespace libphonenumber\data;
use libphonenumber\NumberFormat;
use libphonenumber\PhoneMetadata;
use libphonenumber\PhoneNumberDesc;
/**
* @internal
*/
class PhoneNumberMetadata_ER extends PhoneMetadata
{
protected const ID = 'ER';
protected const COUNTRY_CODE = 291;
protected const NATIONAL_PREFIX = '0';
protected ?string $nationalPrefixForParsing = '0';
protected ?string $internationalPrefix = '00';
public function __construct()
{
$this->generalDesc = (new PhoneNumberDesc())
->setNationalNumberPattern('[178]\d{6}')
->setPossibleLengthLocalOnly([6])
->setPossibleLength([7]);
$this->mobile = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:17[1-3]|7\d\d)\d{4}')
->setExampleNumber('7123456');
$this->premiumRate = PhoneNumberDesc::empty();
$this->fixedLine = (new PhoneNumberDesc())
->setNationalNumberPattern('(?:1(?:1[12568]|[24]0|55|6[146])|8\d\d)\d{4}')
->setExampleNumber('8370362')
->setPossibleLengthLocalOnly([6]);
$this->numberFormat = [
(new NumberFormat())
->setPattern('(\d)(\d{3})(\d{3})')
->setFormat('$1 $2 $3')
->setLeadingDigitsPattern(['[178]'])
->setNationalPrefixFormattingRule('0$1')
->setNationalPrefixOptionalWhenFormatting(false),
];
$this->tollFree = PhoneNumberDesc::empty();
$this->sharedCost = PhoneNumberDesc::empty();
$this->personalNumber = PhoneNumberDesc::empty();
$this->voip = PhoneNumberDesc::empty();
$this->pager = PhoneNumberDesc::empty();
$this->uan = PhoneNumberDesc::empty();
$this->voicemail = PhoneNumberDesc::empty();
$this->noInternationalDialling = PhoneNumberDesc::empty();
}
}

Some files were not shown because too many files have changed in this diff Show More