updated-packages
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# This file specifies the revision of the metadata to build from
|
||||
# It can be a commit, branch or tag of the https://github.com/googlei18n/libphonenumber project
|
||||
# It can be a commit, branch or tag of the https://github.com/google/libphonenumber project
|
||||
#
|
||||
# For more information, look at the phing tasks in build.xml
|
||||
v8.10.1
|
||||
v8.13.3
|
||||
|
33
vendor/giggsey/libphonenumber-for-php/README.md
vendored
33
vendor/giggsey/libphonenumber-for-php/README.md
vendored
@@ -1,14 +1,12 @@
|
||||
# libphonenumber for PHP [](https://travis-ci.org/giggsey/libphonenumber-for-php) [](https://coveralls.io/r/giggsey/libphonenumber-for-php?branch=master)
|
||||
# libphonenumber for PHP [](https://github.com/giggsey/libphonenumber-for-php/actions?query=workflow%3A%22Continuous+Integration%22) [](https://coveralls.io/r/giggsey/libphonenumber-for-php?branch=master)
|
||||
|
||||
[](https://packagist.org/packages/giggsey/libphonenumber-for-php)
|
||||
[](https://packagist.org/packages/giggsey/libphonenumber-for-php)
|
||||
[](https://packagist.org/packages/giggsey/libphonenumber-for-php)
|
||||
[](https://packagist.org/packages/giggsey/libphonenumber-for-php)
|
||||
[](https://packagist.org/packages/giggsey/libphonenumber-for-php)
|
||||
|
||||
## What is it?
|
||||
A PHP library for parsing, formatting, storing and validating international phone numbers. This library is based on Google's [libphonenumber](https://github.com/googlei18n/libphonenumber).
|
||||
|
||||
|
||||
A PHP library for parsing, formatting, storing and validating international phone numbers. This library is based on Google's [libphonenumber](https://github.com/google/libphonenumber).
|
||||
|
||||
- [Installation](#installation)
|
||||
- [Documentation](#documentation)
|
||||
@@ -18,7 +16,7 @@ A PHP library for parsing, formatting, storing and validating international phon
|
||||
- [Quick Examples](#quick-examples)
|
||||
- [Geocoder](#geocoder)
|
||||
- [ShortNumberInfo](#shortnumberinfo)
|
||||
- [Mapping Phone Numbers to carrier](#mapping-phone-numbers-to-carrier)
|
||||
- [Mapping Phone Numbers to Carrier](#mapping-phone-numbers-to-carrier)
|
||||
- [Mapping Phone Numbers to TimeZones](#mapping-phone-numbers-to-timezones)
|
||||
- [FAQ](#faq)
|
||||
- [Problems with Invalid Numbers?](#problems-with-invalid-numbers)
|
||||
@@ -28,7 +26,7 @@ A PHP library for parsing, formatting, storing and validating international phon
|
||||
|
||||
## Installation
|
||||
|
||||
PHP versions 5.3 up to PHP 7.2 are currently supported. HHVM is also supported.
|
||||
PHP versions 5.3 up to PHP 8.1 are currently supported.
|
||||
|
||||
The PECL [mbstring](http://php.net/mbstring) extension is required.
|
||||
|
||||
@@ -42,6 +40,10 @@ You can also use any other [PSR-4](http://www.php-fig.org/psr/psr-4/) compliant
|
||||
|
||||
If you do not use composer, ensure that you also load any dependencies that this project has, such as [giggsey/locale](https://github.com/giggsey/Locale).
|
||||
|
||||
## giggsey/libphonenumber-for-php-lite
|
||||
|
||||
If you only want to make sure of the core PhoneNumber Util functionality, you can use [giggsey/libphonenumber-for-php-lite](https://github.com/giggsey/libphonenumber-for-php-lite), which offers a much smaller package size.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [PhoneNumber Util](docs/PhoneNumberUtil.md)
|
||||
@@ -72,7 +74,7 @@ This library will try to follow the same version numbers as Google. There could
|
||||
This does mean that this project may not follow [Semantic Versioning](http://semver.org/), but instead Google's version policy. As a result, jumps in major versions may not actually contain any backwards
|
||||
incompatible changes. Please read the release notes for such releases.
|
||||
|
||||
Google try to release their versions according to Semantic Versioning, as laid out of in their [Versioning Guide](https://github.com/googlei18n/libphonenumber#versioning-and-announcements).
|
||||
Google try to release their versions according to Semantic Versioning, as laid out of in their [Versioning Guide](https://github.com/google/libphonenumber#versioning-and-announcements).
|
||||
|
||||
## Quick Examples
|
||||
Let's say you have a string representing a phone number from Switzerland. This is how you parse/normalize it into a PhoneNumber object:
|
||||
@@ -226,9 +228,9 @@ $timeZones = $timeZoneMapper->getTimeZonesForNumber($swissNumberProto);
|
||||
|
||||
#### Problems with Invalid Numbers?
|
||||
|
||||
This library uses phone number metadata from Google's [libphonenumber](https://github.com/googlei18n/libphonenumber). If this library is working as intended, it should provide the same result as the Java version of Google's project.
|
||||
This library uses phone number metadata from Google's [libphonenumber](https://github.com/google/libphonenumber). If this library is working as intended, it should provide the same result as the Java version of Google's project.
|
||||
|
||||
If you believe that a phone number is returning an incorrect result, first test it with [libphonenumber](https://github.com/googlei18n/libphonenumber) via their [Online Demo](https://libphonenumber.appspot.com/). If that returns the same result as this project, and you feel it is in error, raise it as an Issue with the libphonenumber project.
|
||||
If you believe that a phone number is returning an incorrect result, first test it with [libphonenumber](https://github.com/google/libphonenumber) via their [Online Demo](https://libphonenumber.appspot.com/). If that returns the same result as this project, and you feel it is in error, raise it as an Issue with the libphonenumber project.
|
||||
|
||||
If Google's [Online Demo](https://libphonenumber.appspot.com/) gives a different result to the [libphonenumber-for-php demo](http://giggsey.com/libphonenumber/), then please raise an Issue here.
|
||||
|
||||
@@ -242,7 +244,13 @@ If you do need to generate the data, the commands are provided by [Phing](https:
|
||||
$ vendor/bin/phing compile
|
||||
```
|
||||
|
||||
This compile process clones the [libphonenumber](https://github.com/googlei18n/libphonenumber) project at the version specified in [METADATA-VERSION.txt](METADATA-VERSION.txt).
|
||||
This compile process clones the [libphonenumber](https://github.com/google/libphonenumber) project at the version specified in [METADATA-VERSION.txt](METADATA-VERSION.txt).
|
||||
|
||||
### Running tests
|
||||
|
||||
This project uses [PHPUnit Bridge](https://symfony.com/doc/current/components/phpunit_bridge.html) to maintain compatibility for the supported PHP versions.
|
||||
|
||||
To run the tests locally, run the `./phpunit` script.
|
||||
|
||||
## Integration with frameworks
|
||||
|
||||
@@ -250,9 +258,10 @@ Other packages exist that integrate libphonenumber-for-php into frameworks.
|
||||
|
||||
| Framework | Packages |
|
||||
| --------- |:-------------:|
|
||||
|Symfony|[PhoneNumberBundle](https://github.com/misd-service-development/phone-number-bundle)|
|
||||
|Symfony|[PhoneNumberBundle](https://github.com/odolbeau/phone-number-bundle)|
|
||||
|Laravel|[Laravel Phone](https://github.com/Propaganistas/Laravel-Phone)|
|
||||
|Yii2|[PhoneInput](https://github.com/Borales/yii2-phone-input)|
|
||||
|Kohana|[PhoneNumber](https://github.com/softmediadev/kohana-phonenumber)|
|
||||
|TYPO3|[TYPO3 Phone Extension](https://github.com/simonschaufi/typo3-phone)|
|
||||
|
||||
These packages are supplied by third parties, and their quality can not be guaranteed.
|
||||
|
@@ -13,7 +13,6 @@
|
||||
"homepage": "https://github.com/giggsey/libphonenumber-for-php",
|
||||
"license": "Apache-2.0",
|
||||
"support": {
|
||||
"irc": "irc://irc.appliedirc.com/lobby",
|
||||
"source": "https://github.com/giggsey/libphonenumber-for-php",
|
||||
"issues": "https://github.com/giggsey/libphonenumber-for-php/issues"
|
||||
},
|
||||
@@ -47,6 +46,7 @@
|
||||
"build/",
|
||||
"docs/",
|
||||
"tests/",
|
||||
".github/",
|
||||
".editorconfig",
|
||||
".gitattributes",
|
||||
".gitignore",
|
||||
@@ -54,26 +54,31 @@
|
||||
".travis.yml",
|
||||
"build.xml",
|
||||
"libphonenumber-for-php.spec",
|
||||
"phpunit.xml.dist"
|
||||
"phpunit.xml.dist",
|
||||
"phpunit"
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.2",
|
||||
"ext-mbstring": "*",
|
||||
"giggsey/locale": "^1.2"
|
||||
"giggsey/locale": "^1.7|^2.0",
|
||||
"symfony/polyfill-mbstring": "^1.17"
|
||||
},
|
||||
"require-dev": {
|
||||
"phing/phing": "^2.7",
|
||||
"pear/versioncontrol_git": "^0.5",
|
||||
"pear/pear-core-minimal": "^1.9",
|
||||
"pear/pear_exception": "^1.0",
|
||||
"phpunit/phpunit": "^4.8.36|^5.0",
|
||||
"symfony/console": "^2.8|^3.0",
|
||||
"symfony/phpunit-bridge": "^4.2 || ^5",
|
||||
"symfony/console": "^2.8|^3.0|^v4.4|^v5.2",
|
||||
"php-coveralls/php-coveralls": "^1.0|^2.0"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "8.x-dev"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "./phpunit",
|
||||
"metadata": "vendor/bin/phing compile"
|
||||
}
|
||||
}
|
||||
|
@@ -33,37 +33,36 @@ class AlternateFormatsCountryCodeSet {
|
||||
13 => 58,
|
||||
14 => 61,
|
||||
15 => 62,
|
||||
16 => 63,
|
||||
17 => 64,
|
||||
18 => 66,
|
||||
19 => 81,
|
||||
20 => 84,
|
||||
21 => 90,
|
||||
22 => 91,
|
||||
23 => 94,
|
||||
24 => 95,
|
||||
25 => 255,
|
||||
26 => 350,
|
||||
27 => 351,
|
||||
28 => 352,
|
||||
29 => 358,
|
||||
30 => 359,
|
||||
31 => 372,
|
||||
32 => 373,
|
||||
33 => 380,
|
||||
34 => 381,
|
||||
35 => 385,
|
||||
36 => 505,
|
||||
37 => 506,
|
||||
38 => 595,
|
||||
39 => 675,
|
||||
40 => 676,
|
||||
41 => 679,
|
||||
42 => 855,
|
||||
43 => 856,
|
||||
44 => 971,
|
||||
45 => 972,
|
||||
46 => 995,
|
||||
16 => 64,
|
||||
17 => 66,
|
||||
18 => 81,
|
||||
19 => 84,
|
||||
20 => 90,
|
||||
21 => 91,
|
||||
22 => 94,
|
||||
23 => 95,
|
||||
24 => 255,
|
||||
25 => 350,
|
||||
26 => 351,
|
||||
27 => 352,
|
||||
28 => 358,
|
||||
29 => 359,
|
||||
30 => 372,
|
||||
31 => 373,
|
||||
32 => 380,
|
||||
33 => 381,
|
||||
34 => 385,
|
||||
35 => 505,
|
||||
36 => 506,
|
||||
37 => 595,
|
||||
38 => 675,
|
||||
39 => 676,
|
||||
40 => 679,
|
||||
41 => 855,
|
||||
42 => 856,
|
||||
43 => 971,
|
||||
44 => 972,
|
||||
45 => 995,
|
||||
);
|
||||
|
||||
}
|
||||
|
@@ -110,7 +110,7 @@ class AsYouTypeFormatter
|
||||
* and/or NDD, etc.
|
||||
* @var string
|
||||
*/
|
||||
private $prefixBeforeNationalNumber;
|
||||
private $prefixBeforeNationalNumber = '';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
@@ -144,29 +144,13 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private static $emptyMetadata;
|
||||
|
||||
/**
|
||||
* A pattern that is used to match character classes in regular expressions. An example of a
|
||||
* character class is [1-4]
|
||||
* @var string
|
||||
*/
|
||||
private static $characterClassPattern = "\\[([^\\[\\]])*\\]";
|
||||
|
||||
/**
|
||||
* Any digit in a regular expression that actually denotes a digit. For example, in the regular
|
||||
* expression 800[0-2]\d{6,10}, the first 2 digits (8 and 0) are standalone digits, but the rest
|
||||
* are not.
|
||||
* Two look-aheads are needed before the number following \\d could be a two-digit number, since
|
||||
* the phone number can be a long as 15 digits.
|
||||
* @var string
|
||||
*/
|
||||
private static $standaloneDigitPattern = "\\d(?=[^,}][^,}])";
|
||||
|
||||
/**
|
||||
* A pattern that is used to determine if a numberFormat under availableFormats is eligible
|
||||
* to be used by the AYTF. It is eligible when the format element under numberFormat contains
|
||||
* groups of the dollar sign followed by a single digit, separated by valid phone number punctuation.
|
||||
* This prevents invalid punctuation (such as the star sign in Israeli star numbers) getting
|
||||
* into the output of the AYTF.
|
||||
* into the output of the AYTF. We require that the first group is present in the output pattern to ensure
|
||||
* no data is lost while formatting; when we format as you type, this should always be the case.
|
||||
* @var string
|
||||
*/
|
||||
private static $eligibleFormatPattern;
|
||||
@@ -203,7 +187,8 @@ class AsYouTypeFormatter
|
||||
self::$emptyMetadata->setInternationalPrefix('NA');
|
||||
|
||||
self::$eligibleFormatPattern = '[' . PhoneNumberUtil::VALID_PUNCTUATION . ']*'
|
||||
. "(\\$\\d" . '[' . PhoneNumberUtil::VALID_PUNCTUATION . ']*)+';
|
||||
. "\\$1" . "[" . PhoneNumberUtil::VALID_PUNCTUATION . "]*(\\$\\d"
|
||||
. "[" . PhoneNumberUtil::VALID_PUNCTUATION . "]*)*";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +202,7 @@ class AsYouTypeFormatter
|
||||
|
||||
$this->phoneUtil = PhoneNumberUtil::getInstance();
|
||||
|
||||
$this->defaultCountry = $regionCode;
|
||||
$this->defaultCountry = strtoupper($regionCode);
|
||||
$this->currentMetadata = $this->getMetadataForRegion($this->defaultCountry);
|
||||
$this->defaultMetadata = $this->currentMetadata;
|
||||
}
|
||||
@@ -256,8 +241,10 @@ class AsYouTypeFormatter
|
||||
}
|
||||
if ($this->createFormattingTemplate($numberFormat)) {
|
||||
$this->currentFormattingPattern = $pattern;
|
||||
$nationalPrefixSeparatorsMatcher = new Matcher(self::$nationalPrefixSeparatorsPattern,
|
||||
$numberFormat->getNationalPrefixFormattingRule());
|
||||
$nationalPrefixSeparatorsMatcher = new Matcher(
|
||||
self::$nationalPrefixSeparatorsPattern,
|
||||
$numberFormat->getNationalPrefixFormattingRule()
|
||||
);
|
||||
$this->shouldAddSpaceAfterNationalPrefix = $nationalPrefixSeparatorsMatcher->find();
|
||||
// With a new formatting template, the matched position using the old template
|
||||
// needs to be reset.
|
||||
@@ -289,7 +276,8 @@ class AsYouTypeFormatter
|
||||
// prefix.
|
||||
if ($this->extractedNationalPrefix !== ''
|
||||
&& PhoneNumberUtil::formattingRuleHasFirstGroupOnly(
|
||||
$format->getNationalPrefixFormattingRule())
|
||||
$format->getNationalPrefixFormattingRule()
|
||||
)
|
||||
&& !$format->getNationalPrefixOptionalWhenFormatting()
|
||||
&& !$format->hasDomesticCarrierCodeFormattingRule()) {
|
||||
// If it is a national number that had a national prefix, any rules that aren't valid with a
|
||||
@@ -302,7 +290,8 @@ class AsYouTypeFormatter
|
||||
if ($this->extractedNationalPrefix === ''
|
||||
&& !$this->isCompleteNumber
|
||||
&& !PhoneNumberUtil::formattingRuleHasFirstGroupOnly(
|
||||
$format->getNationalPrefixFormattingRule())
|
||||
$format->getNationalPrefixFormattingRule()
|
||||
)
|
||||
&& !$format->getNationalPrefixOptionalWhenFormatting()) {
|
||||
// This number was entered without a national prefix, and this formatting rule requires one,
|
||||
// so we discard it.
|
||||
@@ -323,14 +312,14 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private function narrowDownPossibleFormats($leadingDigits)
|
||||
{
|
||||
$indexOfLeadingDigitsPattern = mb_strlen($leadingDigits) - self::$minLeadingDigitsLength;
|
||||
$indexOfLeadingDigitsPattern = \mb_strlen($leadingDigits) - self::$minLeadingDigitsLength;
|
||||
|
||||
foreach ($this->possibleFormats as $key => $format) {
|
||||
if ($format->leadingDigitsPatternSize() === 0) {
|
||||
// Keep everything that isn't restricted by leading digits.
|
||||
continue;
|
||||
}
|
||||
$lastLeadingDigitsPattern = min($indexOfLeadingDigitsPattern, $format->leadingDigitsPatternSize() - 1);
|
||||
$lastLeadingDigitsPattern = \min($indexOfLeadingDigitsPattern, $format->leadingDigitsPatternSize() - 1);
|
||||
$leadingDigitsPattern = $format->getLeadingDigitsPattern($lastLeadingDigitsPattern);
|
||||
$m = new Matcher($leadingDigitsPattern, $leadingDigits);
|
||||
if (!$m->lookingAt()) {
|
||||
@@ -347,22 +336,9 @@ class AsYouTypeFormatter
|
||||
{
|
||||
$numberPattern = $format->getPattern();
|
||||
|
||||
// The formatter doesn't format numbers when numberPattern contains "|", e.g.
|
||||
// (20|3)\d{4}. In those cases we quickly return.
|
||||
if (mb_stripos('|', $numberPattern) !== false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// replace anything in the form of [..] with \d
|
||||
$characterClassMatcher = new Matcher(self::$characterClassPattern, $numberPattern);
|
||||
$numberPattern = $characterClassMatcher->replaceAll("\\\\d");
|
||||
|
||||
// Replace any standalone digit (not the one in d{}) with \d
|
||||
$standAloneDigitMatcher = new Matcher(self::$standaloneDigitPattern, $numberPattern);
|
||||
$numberPattern = $standAloneDigitMatcher->replaceAll("\\\\d");
|
||||
$this->formattingTemplate = '';
|
||||
$tempTemplate = $this->getFormattingTemplate($numberPattern, $format->getFormat());
|
||||
if (mb_strlen($tempTemplate) > 0) {
|
||||
if ($tempTemplate !== '') {
|
||||
$this->formattingTemplate .= $tempTemplate;
|
||||
return true;
|
||||
}
|
||||
@@ -386,13 +362,13 @@ class AsYouTypeFormatter
|
||||
$aPhoneNumber = $m->group();
|
||||
// No formatting template can be created if the number of digits entered entered so far
|
||||
// is longer than the maximum the current formatting rule can accommodate.
|
||||
if (mb_strlen($aPhoneNumber) < mb_strlen($this->nationalNumber)) {
|
||||
if (\mb_strlen($aPhoneNumber) < \mb_strlen($this->nationalNumber)) {
|
||||
return '';
|
||||
}
|
||||
// Formats the number according to $numberFormat
|
||||
$template = preg_replace('/' . $numberPattern . '/' . PhoneNumberUtil::REGEX_FLAGS, $numberFormat, $aPhoneNumber);
|
||||
$template = \preg_replace('/' . $numberPattern . '/' . PhoneNumberUtil::REGEX_FLAGS, $numberFormat, $aPhoneNumber);
|
||||
// Replaces each digit with character self::$digitPlattern
|
||||
$template = preg_replace('/9/', self::$digitPattern, $template);
|
||||
$template = \preg_replace('/9/', self::$digitPattern, $template);
|
||||
return $template;
|
||||
}
|
||||
|
||||
@@ -461,7 +437,7 @@ class AsYouTypeFormatter
|
||||
{
|
||||
$this->accruedInput .= $nextChar;
|
||||
if ($rememberPosition) {
|
||||
$this->originalPosition = mb_strlen($this->accruedInput);
|
||||
$this->originalPosition = \mb_strlen($this->accruedInput);
|
||||
}
|
||||
// We do formatting on-the-fly only when each character entered is either a digit, or a plus
|
||||
// sign (accepted at the start of the number only).
|
||||
@@ -495,7 +471,7 @@ class AsYouTypeFormatter
|
||||
|
||||
// We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits (the plus
|
||||
// sign is counted as a digit as well for this purpose) have been entered.
|
||||
switch (mb_strlen($this->accruedInputWithoutFormatting)) {
|
||||
switch (\mb_strlen($this->accruedInputWithoutFormatting)) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
@@ -510,6 +486,7 @@ class AsYouTypeFormatter
|
||||
return $this->attemptToChooseFormattingPattern();
|
||||
}
|
||||
// fall through
|
||||
// no break
|
||||
default:
|
||||
if ($this->isExpectingCountryCallingCode) {
|
||||
if ($this->attemptToExtractCountryCallingCode()) {
|
||||
@@ -517,13 +494,13 @@ class AsYouTypeFormatter
|
||||
}
|
||||
return $this->prefixBeforeNationalNumber . $this->nationalNumber;
|
||||
}
|
||||
if (count($this->possibleFormats) > 0) {
|
||||
if (\count($this->possibleFormats) > 0) {
|
||||
// The formatting patterns are already chosen.
|
||||
$tempNationalNumber = $this->inputDigitHelper($nextChar);
|
||||
// See if the accrued digits can be formatted properly already. If not, use the results
|
||||
// from inputDigitHelper, which does formatting based on the formatting pattern chosen.
|
||||
$formattedNumber = $this->attemptToFormatAccruedDigits();
|
||||
if (mb_strlen($formattedNumber) > 0) {
|
||||
if ($formattedNumber !== '') {
|
||||
return $formattedNumber;
|
||||
}
|
||||
$this->narrowDownPossibleFormats($this->nationalNumber);
|
||||
@@ -570,14 +547,14 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private function ableToExtractLongerNdd()
|
||||
{
|
||||
if (mb_strlen($this->extractedNationalPrefix) > 0) {
|
||||
if (\mb_strlen($this->extractedNationalPrefix) > 0) {
|
||||
// Put the extracted NDD back to the national number before attempting to extract a new NDD.
|
||||
$this->nationalNumber = $this->extractedNationalPrefix . $this->nationalNumber;
|
||||
// Remove the previously extracted NDD from prefixBeforeNationalNumber. We cannot simply set
|
||||
// it to empty string because people sometimes incorrectly enter national prefix after the
|
||||
// country code, e.g. +44 (0)20-1234-5678.
|
||||
$indexOfPreviousNdd = mb_strrpos($this->prefixBeforeNationalNumber, $this->extractedNationalPrefix);
|
||||
$this->prefixBeforeNationalNumber = mb_substr(str_pad($this->prefixBeforeNationalNumber, $indexOfPreviousNdd), 0, $indexOfPreviousNdd);
|
||||
$indexOfPreviousNdd = \mb_strrpos($this->prefixBeforeNationalNumber, $this->extractedNationalPrefix);
|
||||
$this->prefixBeforeNationalNumber = \mb_substr(\str_pad($this->prefixBeforeNationalNumber, $indexOfPreviousNdd), 0, $indexOfPreviousNdd);
|
||||
}
|
||||
return ($this->extractedNationalPrefix !== $this->removeNationalPrefixFromNationalNumber());
|
||||
}
|
||||
@@ -590,8 +567,8 @@ class AsYouTypeFormatter
|
||||
{
|
||||
$plusCharsMatcher = new Matcher(PhoneNumberUtil::$PLUS_CHARS_PATTERN, $nextChar);
|
||||
|
||||
return preg_match('/' . PhoneNumberUtil::DIGITS . '/' . PhoneNumberUtil::REGEX_FLAGS, $nextChar)
|
||||
|| (mb_strlen($this->accruedInput) === 1 &&
|
||||
return \preg_match('/' . PhoneNumberUtil::DIGITS . '/' . PhoneNumberUtil::REGEX_FLAGS, $nextChar)
|
||||
|| (\mb_strlen($this->accruedInput) === 1 &&
|
||||
$plusCharsMatcher->matches());
|
||||
}
|
||||
|
||||
@@ -608,7 +585,20 @@ class AsYouTypeFormatter
|
||||
$nationalPrefixSeparatorsMatcher = new Matcher(self::$nationalPrefixSeparatorsPattern, $numberFormat->getNationalPrefixFormattingRule());
|
||||
$this->shouldAddSpaceAfterNationalPrefix = $nationalPrefixSeparatorsMatcher->find();
|
||||
$formattedNumber = $m->replaceAll($numberFormat->getFormat());
|
||||
return $this->appendNationalNumber($formattedNumber);
|
||||
// Check that we did not remove nor add any extra digits when we matched
|
||||
// this formatting pattern. This usually happens after we entered the last
|
||||
// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when
|
||||
// formatted but AYTF should retain all the number entered and not change
|
||||
// in order to match a format (of same leading digits and length) display
|
||||
// in that way.
|
||||
$fullOutput = $this->appendNationalNumber($formattedNumber);
|
||||
$formattedNumberDigitsOnly = PhoneNumberUtil::normalizeDiallableCharsOnly($fullOutput);
|
||||
|
||||
if ($formattedNumberDigitsOnly === $this->accruedInputWithoutFormatting) {
|
||||
// If it's the same (i.e entered number and format is same), then it's
|
||||
// safe to return this in formatted number as nothing is lost / added.
|
||||
return $fullOutput;
|
||||
}
|
||||
}
|
||||
}
|
||||
return '';
|
||||
@@ -627,9 +617,9 @@ class AsYouTypeFormatter
|
||||
|
||||
$accruedInputIndex = 0;
|
||||
$currentOutputIndex = 0;
|
||||
$currentOutputLength = mb_strlen($this->currentOutput);
|
||||
$currentOutputLength = \mb_strlen($this->currentOutput);
|
||||
while ($accruedInputIndex < $this->positionToRemember && $currentOutputIndex < $currentOutputLength) {
|
||||
if (mb_substr($this->accruedInputWithoutFormatting, $accruedInputIndex, 1) == mb_substr($this->currentOutput, $currentOutputIndex, 1)) {
|
||||
if (\mb_substr($this->accruedInputWithoutFormatting, $accruedInputIndex, 1) == \mb_substr($this->currentOutput, $currentOutputIndex, 1)) {
|
||||
$accruedInputIndex++;
|
||||
}
|
||||
$currentOutputIndex++;
|
||||
@@ -646,9 +636,9 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private function appendNationalNumber($nationalNumber)
|
||||
{
|
||||
$prefixBeforeNationalNumberLength = mb_strlen($this->prefixBeforeNationalNumber);
|
||||
$prefixBeforeNationalNumberLength = \mb_strlen($this->prefixBeforeNationalNumber);
|
||||
if ($this->shouldAddSpaceAfterNationalPrefix && $prefixBeforeNationalNumberLength > 0
|
||||
&& mb_substr($this->prefixBeforeNationalNumber, $prefixBeforeNationalNumberLength - 1, 1)
|
||||
&& \mb_substr($this->prefixBeforeNationalNumber, $prefixBeforeNationalNumberLength - 1, 1)
|
||||
!= self::$seperatorBeforeNationalNumber
|
||||
) {
|
||||
// We want to add a space after the national prefix if the national prefix formatting rule
|
||||
@@ -669,11 +659,11 @@ class AsYouTypeFormatter
|
||||
{
|
||||
// We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits of national
|
||||
// number (excluding national prefix) have been entered.
|
||||
if (mb_strlen($this->nationalNumber) >= self::$minLeadingDigitsLength) {
|
||||
if (\mb_strlen($this->nationalNumber) >= self::$minLeadingDigitsLength) {
|
||||
$this->getAvailableFormats($this->nationalNumber);
|
||||
// See if the accrued digits can be formatted properly already.
|
||||
$formattedNumber = $this->attemptToFormatAccruedDigits();
|
||||
if (mb_strlen($formattedNumber) > 0) {
|
||||
if ($formattedNumber !== '') {
|
||||
return $formattedNumber;
|
||||
}
|
||||
return $this->maybeCreateNewTemplate() ? $this->inputAccruedNationalNumber() : $this->accruedInput;
|
||||
@@ -689,11 +679,11 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private function inputAccruedNationalNumber()
|
||||
{
|
||||
$lengthOfNationalNumber = mb_strlen($this->nationalNumber);
|
||||
$lengthOfNationalNumber = \mb_strlen($this->nationalNumber);
|
||||
if ($lengthOfNationalNumber > 0) {
|
||||
$tempNationalNumber = '';
|
||||
for ($i = 0; $i < $lengthOfNationalNumber; $i++) {
|
||||
$tempNationalNumber = $this->inputDigitHelper(mb_substr($this->nationalNumber, $i, 1));
|
||||
$tempNationalNumber = $this->inputDigitHelper(\mb_substr($this->nationalNumber, $i, 1));
|
||||
}
|
||||
return $this->ableToFormat ? $this->appendNationalNumber($tempNationalNumber) : $this->accruedInput;
|
||||
}
|
||||
@@ -712,8 +702,8 @@ class AsYouTypeFormatter
|
||||
// that national significant numbers in NANPA always start with [2-9] after the national prefix.
|
||||
// Numbers beginning with 1[01] can only be short/emergency numbers, which don't need the
|
||||
// national prefix.
|
||||
return ($this->currentMetadata->getCountryCode() == 1) && (mb_substr($this->nationalNumber, 0, 1) == '1')
|
||||
&& (mb_substr($this->nationalNumber, 1, 1) != '0') && (mb_substr($this->nationalNumber, 1, 1) != '1');
|
||||
return ($this->currentMetadata->getCountryCode() == 1) && (\mb_substr($this->nationalNumber, 0, 1) == '1')
|
||||
&& (\mb_substr($this->nationalNumber, 1, 1) != '0') && (\mb_substr($this->nationalNumber, 1, 1) != '1');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -737,11 +727,11 @@ class AsYouTypeFormatter
|
||||
// for numbers entered without area code.
|
||||
$this->isCompleteNumber = true;
|
||||
$startOfNationalNumber = $m->end();
|
||||
$this->prefixBeforeNationalNumber .= mb_substr($this->nationalNumber, 0, $startOfNationalNumber);
|
||||
$this->prefixBeforeNationalNumber .= \mb_substr($this->nationalNumber, 0, $startOfNationalNumber);
|
||||
}
|
||||
}
|
||||
$nationalPrefix = mb_substr($this->nationalNumber, 0, $startOfNationalNumber);
|
||||
$this->nationalNumber = mb_substr($this->nationalNumber, $startOfNationalNumber);
|
||||
$nationalPrefix = \mb_substr($this->nationalNumber, 0, $startOfNationalNumber);
|
||||
$this->nationalNumber = \mb_substr($this->nationalNumber, $startOfNationalNumber);
|
||||
return $nationalPrefix;
|
||||
}
|
||||
|
||||
@@ -759,9 +749,9 @@ class AsYouTypeFormatter
|
||||
if ($iddMatcher->lookingAt()) {
|
||||
$this->isCompleteNumber = true;
|
||||
$startOfCountryCallingCode = $iddMatcher->end();
|
||||
$this->nationalNumber = mb_substr($this->accruedInputWithoutFormatting, $startOfCountryCallingCode);
|
||||
$this->prefixBeforeNationalNumber = mb_substr($this->accruedInputWithoutFormatting, 0, $startOfCountryCallingCode);
|
||||
if (mb_substr($this->accruedInputWithoutFormatting, 0, 1) != PhoneNumberUtil::PLUS_SIGN) {
|
||||
$this->nationalNumber = \mb_substr($this->accruedInputWithoutFormatting, $startOfCountryCallingCode);
|
||||
$this->prefixBeforeNationalNumber = \mb_substr($this->accruedInputWithoutFormatting, 0, $startOfCountryCallingCode);
|
||||
if (\mb_substr($this->accruedInputWithoutFormatting, 0, 1) != PhoneNumberUtil::PLUS_SIGN) {
|
||||
$this->prefixBeforeNationalNumber .= self::$seperatorBeforeNationalNumber;
|
||||
}
|
||||
return true;
|
||||
@@ -777,7 +767,7 @@ class AsYouTypeFormatter
|
||||
*/
|
||||
private function attemptToExtractCountryCallingCode()
|
||||
{
|
||||
if (mb_strlen($this->nationalNumber) == 0) {
|
||||
if ($this->nationalNumber === '') {
|
||||
return false;
|
||||
}
|
||||
$numberWithoutCountryCallingCode = '';
|
||||
@@ -821,7 +811,7 @@ class AsYouTypeFormatter
|
||||
$this->nationalNumber .= $normalizedChar;
|
||||
}
|
||||
if ($rememberPosition) {
|
||||
$this->positionToRemember = mb_strlen($this->accruedInputWithoutFormatting);
|
||||
$this->positionToRemember = \mb_strlen($this->accruedInputWithoutFormatting);
|
||||
}
|
||||
return $normalizedChar;
|
||||
}
|
||||
@@ -837,13 +827,15 @@ class AsYouTypeFormatter
|
||||
$digitMatcher = new Matcher(self::$digitPattern, $this->formattingTemplate);
|
||||
if ($digitMatcher->find($this->lastMatchPosition)) {
|
||||
$tempTemplate = $digitMatcher->replaceFirst($nextChar);
|
||||
$this->formattingTemplate = $tempTemplate . mb_substr($this->formattingTemplate, mb_strlen($tempTemplate,
|
||||
'UTF-8'), null, 'UTF-8');
|
||||
$this->formattingTemplate = $tempTemplate . \mb_substr($this->formattingTemplate, \mb_strlen(
|
||||
$tempTemplate,
|
||||
'UTF-8'
|
||||
), null, 'UTF-8');
|
||||
$this->lastMatchPosition = $digitMatcher->start();
|
||||
return mb_substr($this->formattingTemplate, 0, $this->lastMatchPosition + 1);
|
||||
return \mb_substr($this->formattingTemplate, 0, $this->lastMatchPosition + 1);
|
||||
}
|
||||
|
||||
if (count($this->possibleFormats) === 1) {
|
||||
if (\count($this->possibleFormats) === 1) {
|
||||
// More digits are entered than we could handle, and there are no other valid patterns to
|
||||
// try.
|
||||
$this->ableToFormat = false;
|
||||
|
@@ -35,10 +35,6 @@ class CountryCodeToRegionCodeMapForTesting {
|
||||
array (
|
||||
0 => 'FR',
|
||||
),
|
||||
36 =>
|
||||
array (
|
||||
0 => 'HU',
|
||||
),
|
||||
39 =>
|
||||
array (
|
||||
0 => 'IT',
|
||||
@@ -72,6 +68,10 @@ class CountryCodeToRegionCodeMapForTesting {
|
||||
array (
|
||||
0 => 'BR',
|
||||
),
|
||||
57 =>
|
||||
array (
|
||||
0 => 'CO',
|
||||
),
|
||||
61 =>
|
||||
array (
|
||||
0 => 'AU',
|
||||
|
@@ -36,11 +36,18 @@ class ExactGrouping extends AbstractLeniency
|
||||
return false;
|
||||
}
|
||||
|
||||
return PhoneNumberMatcher::checkNumberGroupingIsValid($number, $candidate, $util,
|
||||
return PhoneNumberMatcher::checkNumberGroupingIsValid(
|
||||
$number,
|
||||
$candidate,
|
||||
$util,
|
||||
function (PhoneNumberUtil $util, PhoneNumber $number, $normalizedCandidate, $expectedNumberGroups) {
|
||||
return PhoneNumberMatcher::allNumberGroupsAreExactlyPresent(
|
||||
$util, $number, $normalizedCandidate, $expectedNumberGroups
|
||||
$util,
|
||||
$number,
|
||||
$normalizedCandidate,
|
||||
$expectedNumberGroups
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -38,11 +38,17 @@ class StrictGrouping extends AbstractLeniency
|
||||
}
|
||||
|
||||
return PhoneNumberMatcher::checkNumberGroupingIsValid(
|
||||
$number, $candidate, $util,
|
||||
$number,
|
||||
$candidate,
|
||||
$util,
|
||||
function (PhoneNumberUtil $util, PhoneNumber $number, $normalizedCandidate, $expectedNumberGroups) {
|
||||
return PhoneNumberMatcher::allNumberGroupsRemainGrouped(
|
||||
$util, $number, $normalizedCandidate, $expectedNumberGroups
|
||||
$util,
|
||||
$number,
|
||||
$normalizedCandidate,
|
||||
$expectedNumberGroups
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ class Matcher
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $subject;
|
||||
protected $subject = '';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
@@ -36,8 +36,8 @@ class Matcher
|
||||
*/
|
||||
public function __construct($pattern, $subject)
|
||||
{
|
||||
$this->pattern = str_replace('/', '\/', $pattern);
|
||||
$this->subject = $subject;
|
||||
$this->pattern = str_replace('/', '\/', (string)$pattern);
|
||||
$this->subject = (string)$subject;
|
||||
}
|
||||
|
||||
protected function doMatch($type = 'find', $offset = 0)
|
||||
@@ -69,7 +69,7 @@ class Matcher
|
||||
foreach ($groups as $group) {
|
||||
$positions[] = array(
|
||||
$group[0],
|
||||
$offset + mb_strlen(mb_strcut($search, 0, $group[1]))
|
||||
$offset + mb_strlen(substr($search, 0, $group[1]))
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -59,6 +59,8 @@ class MultiFileMetadataSourceImpl implements MetadataSourceInterface
|
||||
*/
|
||||
public function getMetadataForRegion($regionCode)
|
||||
{
|
||||
$regionCode = strtoupper($regionCode);
|
||||
|
||||
if (!array_key_exists($regionCode, $this->regionToMetadataMap)) {
|
||||
// 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.
|
||||
@@ -89,6 +91,8 @@ class MultiFileMetadataSourceImpl implements MetadataSourceInterface
|
||||
*/
|
||||
public function loadMetadataFromFile($filePrefix, $regionCode, $countryCallingCode, MetadataLoaderInterface $metadataLoader)
|
||||
{
|
||||
$regionCode = strtoupper($regionCode);
|
||||
|
||||
$isNonGeoRegion = PhoneNumberUtil::REGION_CODE_FOR_NON_GEO_ENTITY === $regionCode;
|
||||
$fileName = $filePrefix . '_' . ($isNonGeoRegion ? $countryCallingCode : $regionCode) . '.php';
|
||||
if (!is_readable($fileName)) {
|
||||
|
@@ -34,7 +34,7 @@ class NumberFormat
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $nationalPrefixFormattingRule;
|
||||
protected $nationalPrefixFormattingRule = '';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
@@ -53,7 +53,7 @@ class NumberFormat
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $domesticCarrierCodeFormattingRule;
|
||||
protected $domesticCarrierCodeFormattingRule = '';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
@@ -79,13 +79,13 @@ class NumberFormat
|
||||
$this->leadingDigitsPattern = array();
|
||||
|
||||
$this->hasNationalPrefixFormattingRule = false;
|
||||
$this->nationalPrefixFormattingRule = null;
|
||||
$this->nationalPrefixFormattingRule = '';
|
||||
|
||||
$this->hasNationalPrefixOptionalWhenFormatting = false;
|
||||
$this->nationalPrefixOptionalWhenFormatting = false;
|
||||
|
||||
$this->hasDomesticCarrierCodeFormattingRule = false;
|
||||
$this->domesticCarrierCodeFormattingRule = null;
|
||||
$this->domesticCarrierCodeFormattingRule = '';
|
||||
|
||||
return $this;
|
||||
}
|
||||
@@ -230,7 +230,7 @@ class NumberFormat
|
||||
public function setNationalPrefixFormattingRule($value)
|
||||
{
|
||||
$this->hasNationalPrefixFormattingRule = true;
|
||||
$this->nationalPrefixFormattingRule = $value;
|
||||
$this->nationalPrefixFormattingRule = (string)$value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
@@ -240,7 +240,7 @@ class NumberFormat
|
||||
*/
|
||||
public function clearNationalPrefixFormattingRule()
|
||||
{
|
||||
$this->nationalPrefixFormattingRule = null;
|
||||
$this->nationalPrefixFormattingRule = '';
|
||||
|
||||
return $this;
|
||||
}
|
||||
@@ -268,7 +268,7 @@ class NumberFormat
|
||||
public function setDomesticCarrierCodeFormattingRule($value)
|
||||
{
|
||||
$this->hasDomesticCarrierCodeFormattingRule = true;
|
||||
$this->domesticCarrierCodeFormattingRule = $value;
|
||||
$this->domesticCarrierCodeFormattingRule = (string)$value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@@ -25,7 +25,6 @@ class PhoneMetadata
|
||||
protected $nationalPrefix;
|
||||
protected $preferredExtnPrefix;
|
||||
protected $mainCountryForCode = false;
|
||||
protected $leadingZeroPossible = false;
|
||||
protected $mobileNumberPortableRegion = false;
|
||||
protected $generalDesc;
|
||||
/**
|
||||
@@ -118,11 +117,6 @@ class PhoneMetadata
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function hasLeadingZeroPossible()
|
||||
{
|
||||
return $this->leadingZeroPossible !== null;
|
||||
}
|
||||
|
||||
public function hasMobileNumberPortableRegion()
|
||||
{
|
||||
return $this->mobileNumberPortableRegion !== null;
|
||||
@@ -135,7 +129,7 @@ class PhoneMetadata
|
||||
|
||||
public function numberFormatSize()
|
||||
{
|
||||
return count($this->numberFormat);
|
||||
return \count($this->numberFormat);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,7 +143,7 @@ class PhoneMetadata
|
||||
|
||||
public function intlNumberFormatSize()
|
||||
{
|
||||
return count($this->intlNumberFormat);
|
||||
return \count($this->intlNumberFormat);
|
||||
}
|
||||
|
||||
public function getIntlNumberFormat($index)
|
||||
@@ -288,10 +282,6 @@ class PhoneMetadata
|
||||
$output['leadingDigits'] = $this->getLeadingDigits();
|
||||
}
|
||||
|
||||
if ($this->hasLeadingZeroPossible()) {
|
||||
$output['leadingZeroPossible'] = $this->isLeadingZeroPossible();
|
||||
}
|
||||
|
||||
if ($this->hasMobileNumberPortableRegion()) {
|
||||
$output['mobileNumberPortableRegion'] = $this->isMobileNumberPortableRegion();
|
||||
}
|
||||
@@ -807,23 +797,6 @@ class PhoneMetadata
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isLeadingZeroPossible()
|
||||
{
|
||||
return $this->leadingZeroPossible;
|
||||
}
|
||||
|
||||
public function setLeadingZeroPossible($value)
|
||||
{
|
||||
$this->leadingZeroPossible = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function clearLeadingZeroPossible()
|
||||
{
|
||||
$this->leadingZeroPossible = false;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isMobileNumberPortableRegion()
|
||||
{
|
||||
return $this->mobileNumberPortableRegion;
|
||||
@@ -976,10 +949,6 @@ class PhoneMetadata
|
||||
$this->setLeadingDigits($input['leadingDigits']);
|
||||
}
|
||||
|
||||
if (isset($input['leadingZeroPossible'])) {
|
||||
$this->setLeadingZeroPossible($input['leadingZeroPossible']);
|
||||
}
|
||||
|
||||
if (isset($input['mobileNumberPortableRegion'])) {
|
||||
$this->setMobileNumberPortableRegion($input['mobileNumberPortableRegion']);
|
||||
}
|
||||
|
@@ -518,7 +518,7 @@ class PhoneNumber implements \Serializable
|
||||
$sameNational = $this->hasNationalNumber() == $other->hasNationalNumber() &&
|
||||
(!$this->hasNationalNumber() || $this->getNationalNumber() == $other->getNationalNumber());
|
||||
$sameExt = $this->hasExtension() == $other->hasExtension() &&
|
||||
(!$this->hasExtension() || $this->hasExtension() == $other->hasExtension());
|
||||
(!$this->hasExtension() || $this->getExtension() == $other->getExtension());
|
||||
$sameLead = $this->hasItalianLeadingZero() == $other->hasItalianLeadingZero() &&
|
||||
(!$this->hasItalianLeadingZero() || $this->isItalianLeadingZero() == $other->isItalianLeadingZero());
|
||||
$sameZeros = $this->getNumberOfLeadingZeros() == $other->getNumberOfLeadingZeros();
|
||||
@@ -565,17 +565,20 @@ class PhoneNumber implements \Serializable
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(
|
||||
array(
|
||||
$this->countryCode,
|
||||
$this->nationalNumber,
|
||||
$this->extension,
|
||||
$this->italianLeadingZero,
|
||||
$this->numberOfLeadingZeros,
|
||||
$this->rawInput,
|
||||
$this->countryCodeSource,
|
||||
$this->preferredDomesticCarrierCode
|
||||
)
|
||||
return serialize($this->__serialize());
|
||||
}
|
||||
|
||||
public function __serialize()
|
||||
{
|
||||
return array(
|
||||
$this->countryCode,
|
||||
$this->nationalNumber,
|
||||
$this->extension,
|
||||
$this->italianLeadingZero,
|
||||
$this->numberOfLeadingZeros,
|
||||
$this->rawInput,
|
||||
$this->countryCodeSource,
|
||||
$this->preferredDomesticCarrierCode
|
||||
);
|
||||
}
|
||||
|
||||
@@ -584,8 +587,11 @@ class PhoneNumber implements \Serializable
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
$data = unserialize($serialized);
|
||||
$this->__unserialize(unserialize($serialized));
|
||||
}
|
||||
|
||||
public function __unserialize($data)
|
||||
{
|
||||
list(
|
||||
$this->countryCode,
|
||||
$this->nationalNumber,
|
||||
@@ -595,7 +601,7 @@ class PhoneNumber implements \Serializable
|
||||
$this->rawInput,
|
||||
$this->countryCodeSource,
|
||||
$this->preferredDomesticCarrierCode
|
||||
) = $data;
|
||||
) = $data;
|
||||
|
||||
if ($this->numberOfLeadingZeros > 1) {
|
||||
$this->hasNumberOfLeadingZeros = true;
|
||||
|
@@ -28,7 +28,6 @@ class PhoneNumberMatch
|
||||
* @param int $start The start index into the target text
|
||||
* @param string $rawString The matched substring of the target text
|
||||
* @param PhoneNumber $number The matched phone number
|
||||
* @throws \NullPointerException
|
||||
*/
|
||||
public function __construct($start, $rawString, PhoneNumber $number)
|
||||
{
|
||||
@@ -37,7 +36,7 @@ class PhoneNumberMatch
|
||||
}
|
||||
|
||||
if ($rawString === null) {
|
||||
throw new \NullPointerException;
|
||||
throw new \InvalidArgumentException('$rawString must be a string');
|
||||
}
|
||||
|
||||
$this->start = $start;
|
||||
@@ -69,7 +68,7 @@ class PhoneNumberMatch
|
||||
*/
|
||||
public function end()
|
||||
{
|
||||
return $this->start + mb_strlen($this->rawString);
|
||||
return $this->start + \mb_strlen($this->rawString);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -103,7 +103,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
|
||||
protected static function init()
|
||||
{
|
||||
static::$alternateFormatsFilePrefix = dirname(__FILE__) . '/data/' . static::META_DATA_FILE_PREFIX;
|
||||
static::$alternateFormatsFilePrefix = \dirname(__FILE__) . '/data/' . static::META_DATA_FILE_PREFIX;
|
||||
|
||||
static::$innerMatches = array(
|
||||
// Breaks on the slash - e.g. "651-234-2345/332-445-1234"
|
||||
@@ -178,10 +178,8 @@ class PhoneNumberMatcher implements \Iterator
|
||||
static::$leadClass = $leadClass;
|
||||
|
||||
// Init extension patterns from PhoneNumberUtil
|
||||
PhoneNumberUtil::initCapturingExtnDigits();
|
||||
PhoneNumberUtil::initExtnPatterns();
|
||||
|
||||
|
||||
// Phone number pattern allowing optional punctuation.
|
||||
static::$pattern = '(?:' . $leadClass . $punctuation . ')' . $leadLimit
|
||||
. $digitSequence . '(?:' . $punctuation . $digitSequence . ')' . $blockLimit
|
||||
@@ -270,7 +268,6 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* @param AbstractLeniency $leniency The leniency to use when evaluating candidate phone numbers
|
||||
* @param int $maxTries The maximum number of invalid numbers to try before giving up on the text.
|
||||
* This is to cover degenerate cases where the text has a lot of false positives in it. Must be >= 0
|
||||
* @throws \NullPointerException
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(PhoneNumberUtil $util, $text, $country, AbstractLeniency $leniency, $maxTries)
|
||||
@@ -303,7 +300,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
while (($this->maxTries > 0) && $matcher->find($index)) {
|
||||
$start = $matcher->start();
|
||||
$cutLength = $matcher->end() - $start;
|
||||
$candidate = mb_substr($this->text, $start, $cutLength);
|
||||
$candidate = \mb_substr($this->text, $start, $cutLength);
|
||||
|
||||
// Check for extra numbers at the end.
|
||||
// TODO: This is the place to start when trying to support extraction of multiple phone number
|
||||
@@ -315,7 +312,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
return $match;
|
||||
}
|
||||
|
||||
$index = $start + mb_strlen($candidate);
|
||||
$index = $start + \mb_strlen($candidate);
|
||||
$this->maxTries--;
|
||||
}
|
||||
|
||||
@@ -335,7 +332,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$trailingCharsMatcher = new Matcher($pattern, $candidate);
|
||||
if ($trailingCharsMatcher->find()) {
|
||||
$startChar = $trailingCharsMatcher->start();
|
||||
$candidate = mb_substr($candidate, 0, $startChar);
|
||||
$candidate = \mb_substr($candidate, 0, $startChar);
|
||||
}
|
||||
return $candidate;
|
||||
}
|
||||
@@ -352,12 +349,12 @@ class PhoneNumberMatcher implements \Iterator
|
||||
public static function isLatinLetter($letter)
|
||||
{
|
||||
// Combining marks are a subset of non-spacing-mark.
|
||||
if (preg_match('/\p{L}/u', $letter) !== 1 && preg_match('/\p{Mn}/u', $letter) !== 1) {
|
||||
if (\preg_match('/\p{L}/u', $letter) !== 1 && \preg_match('/\p{Mn}/u', $letter) !== 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (preg_match('/\p{Latin}/u', $letter) === 1)
|
||||
|| (preg_match('/\pM+/u', $letter) === 1);
|
||||
return (\preg_match('/\p{Latin}/u', $letter) === 1)
|
||||
|| (\preg_match('/\pM+/u', $letter) === 1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -366,7 +363,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
*/
|
||||
protected static function isInvalidPunctuationSymbol($character)
|
||||
{
|
||||
return $character == '%' || preg_match('/\p{Sc}/u', $character);
|
||||
return $character == '%' || \preg_match('/\p{Sc}/u', $character);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -387,7 +384,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
// Skip potential time-stamps.
|
||||
$timeStampMatcher = new Matcher(static::$timeStamps, $candidate);
|
||||
if ($timeStampMatcher->find()) {
|
||||
$followingText = mb_substr($this->text, $offset + mb_strlen($candidate));
|
||||
$followingText = \mb_substr($this->text, $offset + \mb_strlen($candidate));
|
||||
$timeStampSuffixMatcher = new Matcher(static::$timeStampsSuffix, $followingText);
|
||||
if ($timeStampSuffixMatcher->lookingAt()) {
|
||||
return null;
|
||||
@@ -422,8 +419,10 @@ class PhoneNumberMatcher implements \Iterator
|
||||
while ($groupMatcher->find() && $this->maxTries > 0) {
|
||||
if ($isFirstMatch) {
|
||||
// We should handle any group before this one too.
|
||||
$group = static::trimAfterFirstMatch(PhoneNumberUtil::$UNWANTED_END_CHAR_PATTERN,
|
||||
mb_substr($candidate, 0, $groupMatcher->start()));
|
||||
$group = static::trimAfterFirstMatch(
|
||||
PhoneNumberUtil::$UNWANTED_END_CHAR_PATTERN,
|
||||
\mb_substr($candidate, 0, $groupMatcher->start())
|
||||
);
|
||||
|
||||
$match = $this->parseAndVerify($group, $offset);
|
||||
if ($match !== null) {
|
||||
@@ -432,8 +431,10 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$this->maxTries--;
|
||||
$isFirstMatch = false;
|
||||
}
|
||||
$group = static::trimAfterFirstMatch(PhoneNumberUtil::$UNWANTED_END_CHAR_PATTERN,
|
||||
$groupMatcher->group(1));
|
||||
$group = static::trimAfterFirstMatch(
|
||||
PhoneNumberUtil::$UNWANTED_END_CHAR_PATTERN,
|
||||
$groupMatcher->group(1)
|
||||
);
|
||||
$match = $this->parseAndVerify($group, $offset + $groupMatcher->start(1));
|
||||
if ($match !== null) {
|
||||
return $match;
|
||||
@@ -471,15 +472,15 @@ class PhoneNumberMatcher implements \Iterator
|
||||
// punctuation, check the previous character.
|
||||
$leadClassMatcher = new Matcher(static::$leadClass, $candidate);
|
||||
if ($offset > 0 && !$leadClassMatcher->lookingAt()) {
|
||||
$previousChar = mb_substr($this->text, $offset - 1, 1);
|
||||
$previousChar = \mb_substr($this->text, $offset - 1, 1);
|
||||
// We return null if it is a latin letter or an invalid punctuation symbol.
|
||||
if (static::isInvalidPunctuationSymbol($previousChar) || static::isLatinLetter($previousChar)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
$lastCharIndex = $offset + mb_strlen($candidate);
|
||||
if ($lastCharIndex < mb_strlen($this->text)) {
|
||||
$nextChar = mb_substr($this->text, $lastCharIndex, 1);
|
||||
$lastCharIndex = $offset + \mb_strlen($candidate);
|
||||
if ($lastCharIndex < \mb_strlen($this->text)) {
|
||||
$nextChar = \mb_substr($this->text, $lastCharIndex, 1);
|
||||
if (static::isInvalidPunctuationSymbol($nextChar) || static::isLatinLetter($nextChar)) {
|
||||
return null;
|
||||
}
|
||||
@@ -520,23 +521,23 @@ class PhoneNumberMatcher implements \Iterator
|
||||
if ($number->getCountryCodeSource() !== CountryCodeSource::FROM_DEFAULT_COUNTRY) {
|
||||
// First skip the country code if the normalized candidate contained it.
|
||||
$countryCode = $number->getCountryCode();
|
||||
$fromIndex = mb_strpos($normalizedCandidate, $countryCode) + mb_strlen($countryCode);
|
||||
$fromIndex = \mb_strpos($normalizedCandidate, $countryCode) + \mb_strlen($countryCode);
|
||||
}
|
||||
|
||||
// Check each group of consecutive digits are not broken into separate groupings in the
|
||||
// $normalizedCandidate string.
|
||||
$formattedNumberGroupsLength = count($formattedNumberGroups);
|
||||
$formattedNumberGroupsLength = \count($formattedNumberGroups);
|
||||
for ($i = 0; $i < $formattedNumberGroupsLength; $i++) {
|
||||
// Fails if the substring of $normalizedCandidate starting from $fromIndex
|
||||
// doesn't contain the consecutive digits in $formattedNumberGroups[$i].
|
||||
$fromIndex = mb_strpos($normalizedCandidate, $formattedNumberGroups[$i], $fromIndex);
|
||||
$fromIndex = \mb_strpos($normalizedCandidate, $formattedNumberGroups[$i], $fromIndex);
|
||||
if ($fromIndex === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Moves $fromIndex forward.
|
||||
$fromIndex += mb_strlen($formattedNumberGroups[$i]);
|
||||
if ($i === 0 && $fromIndex < mb_strlen($normalizedCandidate)) {
|
||||
$fromIndex += \mb_strlen($formattedNumberGroups[$i]);
|
||||
if ($i === 0 && $fromIndex < \mb_strlen($normalizedCandidate)) {
|
||||
// We are at the position right after the NDC. We get the region used for formatting
|
||||
// information based on the country code in the phone number, rather than the number itself,
|
||||
// as we do not need to distinguish between different countries with the same country
|
||||
@@ -544,15 +545,15 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$region = $util->getRegionCodeForCountryCode($number->getCountryCode());
|
||||
|
||||
if ($util->getNddPrefixForRegion($region, true) !== null
|
||||
&& is_int(mb_substr($normalizedCandidate, $fromIndex, 1))
|
||||
&& \is_int(\mb_substr($normalizedCandidate, $fromIndex, 1))
|
||||
) {
|
||||
// This means there is no formatting symbol after the NDC. In this case, we only
|
||||
// accept the number if there is no formatting symbol at all in the number, except
|
||||
// for extensions. This is only important for countries with national prefixes.
|
||||
$nationalSignificantNumber = $util->getNationalSignificantNumber($number);
|
||||
return mb_substr(
|
||||
mb_substr($normalizedCandidate, $fromIndex - mb_strlen($formattedNumberGroups[$i])),
|
||||
mb_strlen($nationalSignificantNumber)
|
||||
return \mb_substr(
|
||||
\mb_substr($normalizedCandidate, $fromIndex - \mb_strlen($formattedNumberGroups[$i])),
|
||||
\mb_strlen($nationalSignificantNumber)
|
||||
) === $nationalSignificantNumber;
|
||||
}
|
||||
}
|
||||
@@ -562,7 +563,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
// formatting in-between digits
|
||||
|
||||
if ($number->hasExtension()) {
|
||||
return mb_strpos(mb_substr($normalizedCandidate, $fromIndex), $number->getExtension()) !== false;
|
||||
return \mb_strpos(\mb_substr($normalizedCandidate, $fromIndex), $number->getExtension()) !== false;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -581,24 +582,26 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$normalizedCandidate,
|
||||
$formattedNumberGroups
|
||||
) {
|
||||
$candidateGroups = preg_split(PhoneNumberUtil::NON_DIGITS_PATTERN, $normalizedCandidate);
|
||||
$candidateGroups = \preg_split(PhoneNumberUtil::NON_DIGITS_PATTERN, $normalizedCandidate);
|
||||
|
||||
// Set this to the last group, skipping it if the number has an extension.
|
||||
$candidateNumberGroupIndex = $number->hasExtension() ? count($candidateGroups) - 2 : count($candidateGroups) - 1;
|
||||
$candidateNumberGroupIndex = $number->hasExtension() ? \count($candidateGroups) - 2 : \count($candidateGroups) - 1;
|
||||
|
||||
// First we check if the national significant number is formatted as a block.
|
||||
// We use contains and not equals, since the national significant number may be present with
|
||||
// a prefix such as a national number prefix, or the country code itself.
|
||||
if (count($candidateGroups) == 1
|
||||
|| mb_strpos($candidateGroups[$candidateNumberGroupIndex],
|
||||
$util->getNationalSignificantNumber($number)) !== false
|
||||
if (\count($candidateGroups) == 1
|
||||
|| \mb_strpos(
|
||||
$candidateGroups[$candidateNumberGroupIndex],
|
||||
$util->getNationalSignificantNumber($number)
|
||||
) !== false
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Starting from the end, go through in reverse, excluding the first group, and check the
|
||||
// candidate and number groups are the same.
|
||||
for ($formattedNumberGroupIndex = (count($formattedNumberGroups) - 1);
|
||||
for ($formattedNumberGroupIndex = (\count($formattedNumberGroups) - 1);
|
||||
$formattedNumberGroupIndex > 0 && $candidateNumberGroupIndex >= 0;
|
||||
$formattedNumberGroupIndex--, $candidateNumberGroupIndex--) {
|
||||
if ($candidateGroups[$candidateNumberGroupIndex] != $formattedNumberGroups[$formattedNumberGroupIndex]) {
|
||||
@@ -609,8 +612,10 @@ class PhoneNumberMatcher implements \Iterator
|
||||
// Now check the first group. There may be a national prefix at the start, so we only check
|
||||
// that the candidate group ends with the formatted number group.
|
||||
return ($candidateNumberGroupIndex >= 0
|
||||
&& mb_substr($candidateGroups[$candidateNumberGroupIndex],
|
||||
-mb_strlen($formattedNumberGroups[0])) == $formattedNumberGroups[0]);
|
||||
&& \mb_substr(
|
||||
$candidateGroups[$candidateNumberGroupIndex],
|
||||
-\mb_strlen($formattedNumberGroups[0])
|
||||
) == $formattedNumberGroups[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -632,20 +637,23 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$rfc3966Format = $util->format($number, PhoneNumberFormat::RFC3966);
|
||||
// We remove the extension part from the formatted string before splitting it into different
|
||||
// groups.
|
||||
$endIndex = mb_strpos($rfc3966Format, ';');
|
||||
$endIndex = \mb_strpos($rfc3966Format, ';');
|
||||
if ($endIndex === false) {
|
||||
$endIndex = mb_strlen($rfc3966Format);
|
||||
$endIndex = \mb_strlen($rfc3966Format);
|
||||
}
|
||||
|
||||
// The country-code will have a '-' following it.
|
||||
$startIndex = mb_strpos($rfc3966Format, '-') + 1;
|
||||
return explode('-', mb_substr($rfc3966Format, $startIndex, $endIndex - $startIndex));
|
||||
$startIndex = \mb_strpos($rfc3966Format, '-') + 1;
|
||||
return \explode('-', \mb_substr($rfc3966Format, $startIndex, $endIndex - $startIndex));
|
||||
}
|
||||
|
||||
// We format the NSN only, and split that according to the separator.
|
||||
// If a format is provided, we format the NSN only, and split that according to the separator.
|
||||
$nationalSignificantNumber = $util->getNationalSignificantNumber($number);
|
||||
return explode('-', $util->formatNsnUsingPattern($nationalSignificantNumber, $formattingPattern,
|
||||
PhoneNumberFormat::RFC3966));
|
||||
return \explode('-', $util->formatNsnUsingPattern(
|
||||
$nationalSignificantNumber,
|
||||
$formattingPattern,
|
||||
PhoneNumberFormat::RFC3966
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -661,19 +669,29 @@ class PhoneNumberMatcher implements \Iterator
|
||||
PhoneNumberUtil $util,
|
||||
\Closure $checker
|
||||
) {
|
||||
// TODO: Evaluate how this works for other locales (testing has been limited to NANPA regions)
|
||||
// and optimise if necessary.
|
||||
$normalizedCandidate = PhoneNumberUtil::normalizeDigits($candidate, true /* keep non-digits */);
|
||||
$formattedNumberGroups = static::getNationalNumberGroups($util, $number, null);
|
||||
$formattedNumberGroups = static::getNationalNumberGroups($util, $number);
|
||||
if ($checker($util, $number, $normalizedCandidate, $formattedNumberGroups)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// If this didn't pass, see if there are any alternative formats, and try them instead.
|
||||
// If this didn't pass, see if there are any alternative formats that match, and try them instead.
|
||||
$alternateFormats = static::getAlternateFormatsForCountry($number->getCountryCode());
|
||||
|
||||
$nationalSignificantNumber = $util->getNationalSignificantNumber($number);
|
||||
if ($alternateFormats !== null) {
|
||||
foreach ($alternateFormats->numberFormats() as $alternateFormat) {
|
||||
if ($alternateFormat->leadingDigitsPatternSize() > 0) {
|
||||
// There is only one leading digits pattern for alternate formats.
|
||||
$pattern = $alternateFormat->getLeadingDigitsPattern(0);
|
||||
|
||||
$nationalSignificantNumberMatcher = new Matcher($pattern, $nationalSignificantNumber);
|
||||
if (!$nationalSignificantNumberMatcher->lookingAt()) {
|
||||
// Leading digits don't match; try another one.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$formattedNumberGroups = static::getNationalNumberGroups($util, $number, $alternateFormat);
|
||||
if ($checker($util, $number, $normalizedCandidate, $formattedNumberGroups)) {
|
||||
return true;
|
||||
@@ -690,14 +708,14 @@ class PhoneNumberMatcher implements \Iterator
|
||||
*/
|
||||
public static function containsMoreThanOneSlashInNationalNumber(PhoneNumber $number, $candidate)
|
||||
{
|
||||
$firstSlashInBodyIndex = mb_strpos($candidate, '/');
|
||||
$firstSlashInBodyIndex = \mb_strpos($candidate, '/');
|
||||
if ($firstSlashInBodyIndex === false) {
|
||||
// No slashes, this is okay
|
||||
return false;
|
||||
}
|
||||
|
||||
// Now look for a second one.
|
||||
$secondSlashInBodyIndex = mb_strpos($candidate, '/', $firstSlashInBodyIndex + 1);
|
||||
$secondSlashInBodyIndex = \mb_strpos($candidate, '/', $firstSlashInBodyIndex + 1);
|
||||
if ($secondSlashInBodyIndex === false) {
|
||||
// Only one slash, this is okay
|
||||
return false;
|
||||
@@ -709,11 +727,11 @@ class PhoneNumberMatcher implements \Iterator
|
||||
|
||||
if ($candidateHasCountryCode
|
||||
&& PhoneNumberUtil::normalizeDigitsOnly(
|
||||
mb_substr($candidate, 0, $firstSlashInBodyIndex)
|
||||
\mb_substr($candidate, 0, $firstSlashInBodyIndex)
|
||||
) == $number->getCountryCode()
|
||||
) {
|
||||
// Any more slashes and this is illegal
|
||||
return (mb_strpos(mb_substr($candidate, $secondSlashInBodyIndex + 1), '/') !== false);
|
||||
return (\mb_strpos(\mb_substr($candidate, $secondSlashInBodyIndex + 1), '/') !== false);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -732,22 +750,24 @@ class PhoneNumberMatcher implements \Iterator
|
||||
// extension number. We assume a carrier code is more than 1 digit, so the first case has to
|
||||
// have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'
|
||||
// or 'X'. We ignore the character if it appears as the last character of the string.
|
||||
$candidateLength = mb_strlen($candidate);
|
||||
$candidateLength = \mb_strlen($candidate);
|
||||
|
||||
for ($index = 0; $index < $candidateLength - 1; $index++) {
|
||||
$charAtIndex = mb_substr($candidate, $index, 1);
|
||||
$charAtIndex = \mb_substr($candidate, $index, 1);
|
||||
if ($charAtIndex == 'x' || $charAtIndex == 'X') {
|
||||
$charAtNextIndex = mb_substr($candidate, $index + 1, 1);
|
||||
$charAtNextIndex = \mb_substr($candidate, $index + 1, 1);
|
||||
if ($charAtNextIndex == 'x' || $charAtNextIndex == 'X') {
|
||||
// This is the carrier code case, in which the 'X's always precede the national
|
||||
// significant number.
|
||||
$index++;
|
||||
|
||||
if ($util->isNumberMatch($number, mb_substr($candidate, $index)) != MatchType::NSN_MATCH) {
|
||||
if ($util->isNumberMatch($number, \mb_substr($candidate, $index)) != MatchType::NSN_MATCH) {
|
||||
return false;
|
||||
}
|
||||
} elseif (!PhoneNumberUtil::normalizeDigitsOnly(mb_substr($candidate,
|
||||
$index)) == $number->getExtension()
|
||||
} elseif (!PhoneNumberUtil::normalizeDigitsOnly(\mb_substr(
|
||||
$candidate,
|
||||
$index
|
||||
)) == $number->getExtension()
|
||||
) {
|
||||
// This is the extension sign case, in which the 'x' or 'X' should always precede the
|
||||
// extension number
|
||||
@@ -782,7 +802,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
$formatRule = $util->chooseFormattingPatternForNumber($metadata->numberFormats(), $nationalNumber);
|
||||
// To do this, we check that a national prefix formatting rule was present and that it wasn't
|
||||
// just the first-group symbol ($1) with punctuation.
|
||||
if (($formatRule !== null) && mb_strlen($formatRule->getNationalPrefixFormattingRule()) > 0) {
|
||||
if (($formatRule !== null) && $formatRule->getNationalPrefixFormattingRule() !== '') {
|
||||
if ($formatRule->getNationalPrefixOptionalWhenFormatting()) {
|
||||
// The national-prefix is optional in these cases, so we don't need to check if it was
|
||||
// present.
|
||||
@@ -820,7 +840,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
{
|
||||
$countryCodeSet = AlternateFormatsCountryCodeSet::$alternateFormatsCountryCodeSet;
|
||||
|
||||
if (!in_array($countryCallingCode, $countryCodeSet)) {
|
||||
if (!\in_array($countryCallingCode, $countryCodeSet)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -839,7 +859,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
{
|
||||
$fileName = static::$alternateFormatsFilePrefix . '_' . $countryCallingCode . '.php';
|
||||
|
||||
if (!is_readable($fileName)) {
|
||||
if (!\is_readable($fileName)) {
|
||||
throw new \Exception('missing metadata: ' . $fileName);
|
||||
}
|
||||
|
||||
@@ -856,6 +876,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* @link http://php.net/manual/en/iterator.current.php
|
||||
* @return PhoneNumberMatch|null
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function current()
|
||||
{
|
||||
return $this->lastMatch;
|
||||
@@ -866,6 +887,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* @link http://php.net/manual/en/iterator.next.php
|
||||
* @return void Any returned value is ignored.
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function next()
|
||||
{
|
||||
$this->lastMatch = $this->find($this->searchIndex);
|
||||
@@ -886,6 +908,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* @return mixed scalar on success, or null on failure.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function key()
|
||||
{
|
||||
return $this->searchIndex;
|
||||
@@ -898,6 +921,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* Returns true on success or false on failure.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function valid()
|
||||
{
|
||||
return $this->state === 'READY';
|
||||
@@ -909,6 +933,7 @@ class PhoneNumberMatcher implements \Iterator
|
||||
* @return void Any returned value is ignored.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function rewind()
|
||||
{
|
||||
$this->searchIndex = 0;
|
||||
|
@@ -29,7 +29,7 @@ class PhoneNumberToTimeZonesMapper
|
||||
protected function __construct($phonePrefixDataDirectory)
|
||||
{
|
||||
$this->prefixTimeZonesMap = static::loadPrefixTimeZonesMapFromFile(
|
||||
dirname(__FILE__) . $phonePrefixDataDirectory . DIRECTORY_SEPARATOR . static::MAPPING_DATA_FILE_NAME
|
||||
\dirname(__FILE__) . $phonePrefixDataDirectory . DIRECTORY_SEPARATOR . static::MAPPING_DATA_FILE_NAME
|
||||
);
|
||||
$this->phoneUtil = PhoneNumberUtil::getInstance();
|
||||
|
||||
@@ -38,7 +38,7 @@ class PhoneNumberToTimeZonesMapper
|
||||
|
||||
protected static function loadPrefixTimeZonesMapFromFile($path)
|
||||
{
|
||||
if (!is_readable($path)) {
|
||||
if (!\is_readable($path)) {
|
||||
throw new \InvalidArgumentException('Mapping file can not be found');
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ class PhoneNumberToTimeZonesMapper
|
||||
protected function getCountryLevelTimeZonesforNumber(PhoneNumber $number)
|
||||
{
|
||||
$timezones = $this->prefixTimeZonesMap->lookupCountryLevelTimeZonesForNumber($number);
|
||||
return (count($timezones) == 0) ? $this->unknownTimeZoneList : $timezones;
|
||||
return (\count($timezones) == 0) ? $this->unknownTimeZoneList : $timezones;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,6 +138,6 @@ class PhoneNumberToTimeZonesMapper
|
||||
protected function getTimeZonesForGeocodableNumber(PhoneNumber $number)
|
||||
{
|
||||
$timezones = $this->prefixTimeZonesMap->lookupTimeZonesForNumber($number);
|
||||
return (count($timezones) == 0) ? $this->unknownTimeZoneList : $timezones;
|
||||
return (\count($timezones) == 0) ? $this->unknownTimeZoneList : $timezones;
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@ use libphonenumber\Leniency\AbstractLeniency;
|
||||
* http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
|
||||
*
|
||||
* @author Shaopeng Jia
|
||||
* @see https://github.com/googlei18n/libphonenumber
|
||||
* @see https://github.com/google/libphonenumber
|
||||
*/
|
||||
class PhoneNumberUtil
|
||||
{
|
||||
@@ -43,11 +43,6 @@ class PhoneNumberUtil
|
||||
const UNKNOWN_REGION = 'ZZ';
|
||||
|
||||
const NANPA_COUNTRY_CODE = 1;
|
||||
/*
|
||||
* The prefix that needs to be inserted in front of a Colombian landline number when dialed from
|
||||
* a mobile number in Colombia.
|
||||
*/
|
||||
const COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3';
|
||||
// The PLUS_SIGN signifies the international prefix.
|
||||
const PLUS_SIGN = '+';
|
||||
const PLUS_CHARS = '++';
|
||||
@@ -91,7 +86,7 @@ class PhoneNumberUtil
|
||||
|
||||
// The FIRST_GROUP_PATTERN was originally set to $1 but there are some countries for which the
|
||||
// first group is not used in the national pattern (e.g. Argentina) so the $1 group does not match
|
||||
// correctly. Therefore, we use \d, so that the first group actually used in the pattern will be
|
||||
// correctly. Therefore, we use \d, so that the first group actually used in the pattern will be
|
||||
// matched.
|
||||
const FIRST_GROUP_PATTERN = "(\\$\\d)";
|
||||
// Constants used in the formatting rules to represent the national prefix, first group and
|
||||
@@ -101,7 +96,7 @@ class PhoneNumberUtil
|
||||
const CC_STRING = '$CC';
|
||||
|
||||
// A pattern that is used to determine if the national prefix formatting rule has the first group
|
||||
// only, i.e., does not start with the national prefix. Note that the pattern explicitly allows
|
||||
// only, i.e, does not start with the national prefix. Note that the pattern explicitly allows
|
||||
// for unbalanced parentheses.
|
||||
const FIRST_GROUP_ONLY_PREFIX_PATTERN = '\\(?\\$1\\)?';
|
||||
public static $PLUS_CHARS_PATTERN;
|
||||
@@ -120,6 +115,7 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* Only upper-case variants of alpha characters are stored.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $ALPHA_MAPPINGS = array(
|
||||
@@ -155,6 +151,7 @@ class PhoneNumberUtil
|
||||
* Map of country calling codes that use a mobile token before the area code. One example of when
|
||||
* this is relevant is when determining the length of the national destination code, which should
|
||||
* be the length of the area code plus the length of the mobile token.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $MOBILE_TOKEN_MAPPINGS = array();
|
||||
@@ -182,6 +179,7 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* For performance reasons, amalgamate both into one map.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $ALPHA_PHONE_MAPPINGS;
|
||||
@@ -189,6 +187,7 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* Separate map of all symbols that we wish to retain when formatting alpha numbers. This
|
||||
* includes digits, ASCII letters and number grouping symbols such as "-" and " ".
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $ALL_PLUS_NUMBER_GROUPING_SYMBOLS;
|
||||
@@ -196,6 +195,7 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* Simple ASCII digits map used to populate ALPHA_PHONE_MAPPINGS and
|
||||
* ALL_PLUS_NUMBER_GROUPING_SYMBOLS.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $asciiDigitMappings = array(
|
||||
@@ -215,6 +215,7 @@ class PhoneNumberUtil
|
||||
* Regexp of all possible ways to write extensions, for use when parsing. This will be run as a
|
||||
* case-insensitive regexp match. Wide character versions are also provided after each ASCII
|
||||
* version.
|
||||
*
|
||||
* @var String
|
||||
*/
|
||||
protected static $EXTN_PATTERNS_FOR_PARSING;
|
||||
@@ -243,6 +244,7 @@ class PhoneNumberUtil
|
||||
* have alpha-characters and punctuation.
|
||||
*
|
||||
* Note VALID_PUNCTUATION starts with a -, so must be the first in the range.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected static $VALID_PHONE_NUMBER;
|
||||
@@ -294,11 +296,13 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* The set of county calling codes that map to the non-geo entity region ("001").
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $countryCodesForNonGeographicalRegion = array();
|
||||
/**
|
||||
* The set of regions the library supports.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $supportedRegions = array();
|
||||
@@ -308,11 +312,13 @@ class PhoneNumberUtil
|
||||
* by that country calling code. In the case of multiple regions sharing a calling code, such as
|
||||
* the NANPA regions, the one indicated with "isMainCountryForCode" in the metadata should be
|
||||
* first.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $countryCallingCodeToRegionCodeMap = array();
|
||||
/**
|
||||
* The set of regions that share country calling code 1.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $nanpaRegions = array();
|
||||
@@ -338,7 +344,6 @@ class PhoneNumberUtil
|
||||
$this->countryCallingCodeToRegionCodeMap = $countryCallingCodeToRegionCodeMap;
|
||||
$this->init();
|
||||
$this->matcherAPI = RegexBasedMatcher::create();
|
||||
static::initCapturingExtnDigits();
|
||||
static::initExtnPatterns();
|
||||
static::initExtnPattern();
|
||||
static::$PLUS_CHARS_PATTERN = '[' . static::PLUS_CHARS . ']+';
|
||||
@@ -393,10 +398,10 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* Gets a {@link PhoneNumberUtil} instance to carry out international phone number formatting,
|
||||
* parsing, or validation. The instance is loaded with phone number metadata for a number of most
|
||||
* parsing or validation. The instance is loaded with phone number metadata for a number of most
|
||||
* commonly used regions.
|
||||
*
|
||||
* <p>The {@link PhoneNumberUtil} is implemented as a singleton. Therefore, calling getInstance
|
||||
* <p>The {@link PhoneNumberUtil} is implemented as a singleton. Therefore calling getInstance
|
||||
* multiple times will only result in one instance being created.
|
||||
*
|
||||
* @param string $baseFileLocation
|
||||
@@ -454,53 +459,109 @@ class PhoneNumberUtil
|
||||
$this->nanpaRegions = $this->countryCallingCodeToRegionCodeMap[static::NANPA_COUNTRY_CODE];
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
public static function initCapturingExtnDigits()
|
||||
{
|
||||
static::$CAPTURING_EXTN_DIGITS = '(' . static::DIGITS . '{1,7})';
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
public static function initExtnPatterns()
|
||||
{
|
||||
// One-character symbols that can be used to indicate an extension.
|
||||
$singleExtnSymbolsForMatching = "x\xEF\xBD\x98#\xEF\xBC\x83~\xEF\xBD\x9E";
|
||||
// For parsing, we are slightly more lenient in our interpretation than for matching. Here we
|
||||
// allow "comma" and "semicolon" as possible extension indicators. When matching, these are
|
||||
// hardly ever used to indicate this.
|
||||
$singleExtnSymbolsForParsing = ',;' . $singleExtnSymbolsForMatching;
|
||||
|
||||
static::$EXTN_PATTERNS_FOR_PARSING = static::createExtnPattern($singleExtnSymbolsForParsing);
|
||||
static::$EXTN_PATTERNS_FOR_MATCHING = static::createExtnPattern($singleExtnSymbolsForMatching);
|
||||
static::$EXTN_PATTERNS_FOR_PARSING = static::createExtnPattern(true);
|
||||
static::$EXTN_PATTERNS_FOR_MATCHING = static::createExtnPattern(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper initialiser method to create the regular-expression pattern to match extensions,
|
||||
* allowing the one-char extension symbols provided by {@code singleExtnSymbols}.
|
||||
* @param string $singleExtnSymbols
|
||||
* Helper method for constructing regular expressions for parsing. Creates an expression that
|
||||
* captures up to maxLength digits.
|
||||
* @param int $maxLength
|
||||
* @return string
|
||||
*/
|
||||
protected static function createExtnPattern($singleExtnSymbols)
|
||||
private static function extnDigits($maxLength)
|
||||
{
|
||||
// There are three regular expressions here. The first covers RFC 3966 format, where the
|
||||
// extension is added using ";ext=". The second more generic one starts with optional white
|
||||
// space and ends with an optional full stop (.), followed by zero or more spaces/tabs/commas
|
||||
// and then the numbers themselves. The other one covers the special case of American numbers
|
||||
// where the extension is written with a hash at the end, such as "- 503#"
|
||||
// Note that the only capturing groups should be around the digits that you want to capture as
|
||||
// part of the extension, or else parsing will fail!
|
||||
// Canonical-equivalence doesn't seem to be an option with Android java, so we allow two options
|
||||
// for representing the accented o - the character itself, and one in the unicode decomposed
|
||||
// form with the combining acute accent.
|
||||
return (static::RFC3966_EXTN_PREFIX . static::$CAPTURING_EXTN_DIGITS . '|' . "[ \xC2\xA0\\t,]*" .
|
||||
"(?:e?xt(?:ensi(?:o\xCC\x81?|\xC3\xB3))?n?|(?:\xEF\xBD\x85)?\xEF\xBD\x98\xEF\xBD\x94(?:\xEF\xBD\x8E)?|" .
|
||||
'доб|' . '[' . $singleExtnSymbols . "]|int|\xEF\xBD\x89\xEF\xBD\x8E\xEF\xBD\x94|anexo)" .
|
||||
"[:\\.\xEF\xBC\x8E]?[ \xC2\xA0\\t,-]*" . static::$CAPTURING_EXTN_DIGITS . "\\#?|" .
|
||||
'[- ]+(' . static::DIGITS . "{1,5})\\#");
|
||||
return '(' . self::DIGITS . '{1,' . $maxLength . '})';
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper initialiser method to create the regular-expression pattern to match extensions.
|
||||
* Note that there are currently six capturing groups for the extension itself. If this number is
|
||||
* changed, MaybeStripExtension needs to be updated.
|
||||
*
|
||||
* @param boolean $forParsing
|
||||
* @return string
|
||||
*/
|
||||
protected static function createExtnPattern($forParsing)
|
||||
{
|
||||
// We cap the maximum length of an extension based on the ambiguity of the way the extension is
|
||||
// prefixed. As per ITU, the officially allowed length for extensions is actually 40, but we
|
||||
// don't support this since we haven't seen real examples and this introduces many false
|
||||
// interpretations as the extension labels are not standardized.
|
||||
$extLimitAfterExplicitLabel = 20;
|
||||
$extLimitAfterLikelyLabel = 15;
|
||||
$extLimitAfterAmbiguousChar = 9;
|
||||
$extLimitWhenNotSure = 6;
|
||||
|
||||
|
||||
|
||||
$possibleSeparatorsBetweenNumberAndExtLabel = "[ \xC2\xA0\\t,]*";
|
||||
// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.
|
||||
$possibleCharsAfterExtLabel = "[:\\.\xEf\xBC\x8E]?[ \xC2\xA0\\t,-]*";
|
||||
$optionalExtnSuffix = "#?";
|
||||
|
||||
// Here the extension is called out in more explicit way, i.e mentioning it obvious patterns
|
||||
// like "ext.". Canonical-equivalence doesn't seem to be an option with Android java, so we
|
||||
// allow two options for representing the accented o - the character itself, and one in the
|
||||
// unicode decomposed form with the combining acute accent.
|
||||
$explicitExtLabels = "(?:e?xt(?:ensi(?:o\xCC\x81?|\xC3\xB3))?n?|\xEF\xBD\x85?\xEF\xBD\x98\xEF\xBD\x94\xEF\xBD\x8E?|\xD0\xB4\xD0\xBE\xD0\xB1|anexo)";
|
||||
// One-character symbols that can be used to indicate an extension, and less commonly used
|
||||
// or more ambiguous extension labels.
|
||||
$ambiguousExtLabels = "(?:[x\xEF\xBD\x98#\xEF\xBC\x83~\xEF\xBD\x9E]|int|\xEF\xBD\x89\xEF\xBD\x8E\xEF\xBD\x94)";
|
||||
// When extension is not separated clearly.
|
||||
$ambiguousSeparator = "[- ]+";
|
||||
|
||||
$rfcExtn = static::RFC3966_EXTN_PREFIX . static::extnDigits($extLimitAfterExplicitLabel);
|
||||
$explicitExtn = $possibleSeparatorsBetweenNumberAndExtLabel . $explicitExtLabels
|
||||
. $possibleCharsAfterExtLabel . static::extnDigits($extLimitAfterExplicitLabel)
|
||||
. $optionalExtnSuffix;
|
||||
$ambiguousExtn = $possibleSeparatorsBetweenNumberAndExtLabel . $ambiguousExtLabels
|
||||
. $possibleCharsAfterExtLabel . static::extnDigits($extLimitAfterAmbiguousChar) . $optionalExtnSuffix;
|
||||
$americanStyleExtnWithSuffix = $ambiguousSeparator . static::extnDigits($extLimitWhenNotSure) . "#";
|
||||
|
||||
// The first regular expression covers RFC 3966 format, where the extension is added using
|
||||
// ";ext=". The second more generic where extension is mentioned with explicit labels like
|
||||
// "ext:". In both the above cases we allow more numbers in extension than any other extension
|
||||
// labels. The third one captures when single character extension labels or less commonly used
|
||||
// labels are used. In such cases we capture fewer extension digits in order to reduce the
|
||||
// chance of falsely interpreting two numbers beside each other as a number + extension. The
|
||||
// fourth one covers the special case of American numbers where the extension is written with a
|
||||
// hash at the end, such as "- 503#".
|
||||
$extensionPattern =
|
||||
$rfcExtn . "|"
|
||||
. $explicitExtn . "|"
|
||||
. $ambiguousExtn . "|"
|
||||
. $americanStyleExtnWithSuffix;
|
||||
// Additional pattern that is supported when parsing extensions, not when matching.
|
||||
if ($forParsing) {
|
||||
// This is same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching comma as
|
||||
// extension label may have it.
|
||||
$possibleSeparatorsNumberExtLabelNoComma = "[ \xC2\xA0\\t]*";
|
||||
// ",," is commonly used for auto dialling the extension when connected. First comma is matched
|
||||
// through possibleSeparatorsBetweenNumberAndExtLabel, so we do not repeat it here. Semi-colon
|
||||
// works in Iphone and Android also to pop up a button with the extension number following.
|
||||
$autoDiallingAndExtLabelsFound = "(?:,{2}|;)";
|
||||
|
||||
$autoDiallingExtn = $possibleSeparatorsNumberExtLabelNoComma
|
||||
. $autoDiallingAndExtLabelsFound . $possibleCharsAfterExtLabel
|
||||
. static::extnDigits($extLimitAfterLikelyLabel) . $optionalExtnSuffix;
|
||||
$onlyCommasExtn = $possibleSeparatorsNumberExtLabelNoComma
|
||||
. '(?:,)+' . $possibleCharsAfterExtLabel . static::extnDigits($extLimitAfterAmbiguousChar)
|
||||
. $optionalExtnSuffix;
|
||||
// Here the first pattern is exclusively for extension autodialling formats which are used
|
||||
// when dialling and in this case we accept longer extensions. However, the second pattern
|
||||
// is more liberal on the number of commas that acts as extension labels, so we have a strict
|
||||
// cap on the number of digits in such extensions.
|
||||
return $extensionPattern . "|"
|
||||
. $autoDiallingExtn . "|"
|
||||
. $onlyCommasExtn;
|
||||
}
|
||||
return $extensionPattern;
|
||||
}
|
||||
|
||||
protected static function initExtnPattern()
|
||||
@@ -510,7 +571,6 @@ class PhoneNumberUtil
|
||||
|
||||
protected static function initValidPhoneNumberPatterns()
|
||||
{
|
||||
static::initCapturingExtnDigits();
|
||||
static::initExtnPatterns();
|
||||
static::$MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' . static::DIGITS . ']{' . static::MIN_LENGTH_FOR_NSN . '}';
|
||||
static::$VALID_PHONE_NUMBER = '[' . static::PLUS_CHARS . ']*(?:[' . static::VALID_PUNCTUATION . static::STAR_SIGN . ']*[' . static::DIGITS . ']){3,}[' . static::VALID_PUNCTUATION . static::STAR_SIGN . static::VALID_ALPHA . static::DIGITS . ']*';
|
||||
@@ -530,7 +590,6 @@ class PhoneNumberUtil
|
||||
protected static function initMobileTokenMappings()
|
||||
{
|
||||
static::$MOBILE_TOKEN_MAPPINGS = array();
|
||||
static::$MOBILE_TOKEN_MAPPINGS['52'] = '1';
|
||||
static::$MOBILE_TOKEN_MAPPINGS['54'] = '9';
|
||||
}
|
||||
|
||||
@@ -553,6 +612,7 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* Converts all alpha characters in a number to their respective digits on a keypad, but retains
|
||||
* existing formatting.
|
||||
*
|
||||
* @param string $number
|
||||
* @return string
|
||||
*/
|
||||
@@ -572,10 +632,10 @@ class PhoneNumberUtil
|
||||
*
|
||||
* @param string $number a string of characters representing a phone number
|
||||
* @param array $normalizationReplacements a mapping of characters to what they should be replaced by in
|
||||
* the normalized version of the phone number
|
||||
* @param bool $removeNonMatches indicates whether characters that are not able to be replaced
|
||||
* the normalized version of the phone number.
|
||||
* @param bool $removeNonMatches indicates whether characters that are not able to be replaced.
|
||||
* should be stripped from the number. If this is false, they will be left unchanged in the number.
|
||||
* @return string the normalized string version of the phone number
|
||||
* @return string the normalized string version of the phone number.
|
||||
*/
|
||||
protected static function normalizeHelper($number, array $normalizationReplacements, $removeNonMatches)
|
||||
{
|
||||
@@ -596,15 +656,18 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* Helper function to check if the national prefix formatting rule has the first group only, i.e.,
|
||||
* does not start with the national prefix.
|
||||
*
|
||||
* @param string $nationalPrefixFormattingRule
|
||||
* @return bool
|
||||
*/
|
||||
public static function formattingRuleHasFirstGroupOnly($nationalPrefixFormattingRule)
|
||||
{
|
||||
$firstGroupOnlyPrefixPatternMatcher = new Matcher(static::FIRST_GROUP_ONLY_PREFIX_PATTERN,
|
||||
$nationalPrefixFormattingRule);
|
||||
$firstGroupOnlyPrefixPatternMatcher = new Matcher(
|
||||
static::FIRST_GROUP_ONLY_PREFIX_PATTERN,
|
||||
$nationalPrefixFormattingRule
|
||||
);
|
||||
|
||||
return mb_strlen($nationalPrefixFormattingRule) === 0
|
||||
return $nationalPrefixFormattingRule === ''
|
||||
|| $firstGroupOnlyPrefixPatternMatcher->matches();
|
||||
}
|
||||
|
||||
@@ -676,7 +739,7 @@ class PhoneNumberUtil
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the types we have metadata for based on the PhoneMetadata object passed in
|
||||
* Returns the types we have metadata for based on the PhoneMetadata object passed in.
|
||||
*
|
||||
* @param PhoneMetadata $metadata
|
||||
* @return array
|
||||
@@ -772,6 +835,7 @@ class PhoneNumberUtil
|
||||
* entities
|
||||
* <li> some geographical numbers have no area codes.
|
||||
* </ul>
|
||||
*
|
||||
* @param PhoneNumber $number PhoneNumber object for which clients want to know the length of the area code.
|
||||
* @return int the length of area code of the PhoneNumber object passed in.
|
||||
*/
|
||||
@@ -809,8 +873,9 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* Returns the metadata for the given region code or {@code null} if the region code is invalid
|
||||
* or unknown.
|
||||
*
|
||||
* @param string $regionCode
|
||||
* @return PhoneMetadata
|
||||
* @return null|PhoneMetadata
|
||||
*/
|
||||
public function getMetadataForRegion($regionCode)
|
||||
{
|
||||
@@ -823,12 +888,13 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* Helper function to check region code is not unknown or null.
|
||||
*
|
||||
* @param string $regionCode
|
||||
* @return bool
|
||||
*/
|
||||
protected function isValidRegionCode($regionCode)
|
||||
{
|
||||
return $regionCode !== null && in_array($regionCode, $this->supportedRegions);
|
||||
return $regionCode !== null && !is_numeric($regionCode) && in_array(strtoupper($regionCode), $this->supportedRegions);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -855,6 +921,8 @@ class PhoneNumberUtil
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the region code for a number from the list of region codes passing in.
|
||||
*
|
||||
* @param PhoneNumber $number
|
||||
* @param array $regionCodes
|
||||
* @return null|string
|
||||
@@ -903,6 +971,8 @@ class PhoneNumberUtil
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of number passed in i.e Toll free, premium.
|
||||
*
|
||||
* @param string $nationalNumber
|
||||
* @param PhoneMetadata $metadata
|
||||
* @return int PhoneNumberType constant
|
||||
@@ -1011,6 +1081,7 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* Gets the type of a valid phone number.
|
||||
*
|
||||
* @param PhoneNumber $number the number the phone number that we want to know the type
|
||||
* @return int PhoneNumberType the type of the phone number, or UNKNOWN if it is invalid
|
||||
*/
|
||||
@@ -1028,7 +1099,7 @@ class PhoneNumberUtil
|
||||
/**
|
||||
* @param int $countryCallingCode
|
||||
* @param string $regionCode
|
||||
* @return PhoneMetadata
|
||||
* @return null|PhoneMetadata
|
||||
*/
|
||||
protected function getMetadataForRegionOrCallingCode($countryCallingCode, $regionCode)
|
||||
{
|
||||
@@ -1038,7 +1109,7 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* @param int $countryCallingCode
|
||||
* @return PhoneMetadata
|
||||
* @return null|PhoneMetadata
|
||||
*/
|
||||
public function getMetadataForNonGeographicalRegion($countryCallingCode)
|
||||
{
|
||||
@@ -1053,7 +1124,13 @@ class PhoneNumberUtil
|
||||
* so that clients could use it to split a national significant number into NDC and subscriber
|
||||
* number. The NDC of a phone number is normally the first group of digit(s) right after the
|
||||
* country calling code when the number is formatted in the international format, if there is a
|
||||
* subscriber number part that follows. An example of how this could be used:
|
||||
* subscriber number part that follows.
|
||||
*
|
||||
* follows.
|
||||
*
|
||||
* N.B.: similar to an area code, not all numbers have an NDC!
|
||||
*
|
||||
* An example of how this could be used:
|
||||
*
|
||||
* <code>
|
||||
* $phoneUtil = PhoneNumberUtil::getInstance();
|
||||
@@ -1074,7 +1151,7 @@ class PhoneNumberUtil
|
||||
* {@link #getLengthOfGeographicalAreaCode}.
|
||||
*
|
||||
* @param PhoneNumber $number the PhoneNumber object for which clients want to know the length of the NDC.
|
||||
* @return int the length of NDC of the PhoneNumber object passed in.
|
||||
* @return int the length of NDC of the PhoneNumber object passed in, which could be zero
|
||||
*/
|
||||
public function getLengthOfNationalDestinationCode(PhoneNumber $number)
|
||||
{
|
||||
@@ -1137,7 +1214,7 @@ class PhoneNumberUtil
|
||||
// TODO: Consider removing the 'if' above so that unparseable
|
||||
// strings without raw input format to the empty string instead of "+00"
|
||||
$rawInput = $number->getRawInput();
|
||||
if (mb_strlen($rawInput) > 0) {
|
||||
if ($rawInput !== '') {
|
||||
return $rawInput;
|
||||
}
|
||||
}
|
||||
@@ -1293,8 +1370,8 @@ class PhoneNumberUtil
|
||||
$numberFormatRule = $formattingPattern->getFormat();
|
||||
$m = new Matcher($formattingPattern->getPattern(), $nationalNumber);
|
||||
if ($numberFormat === PhoneNumberFormat::NATIONAL &&
|
||||
$carrierCode !== null && mb_strlen($carrierCode) > 0 &&
|
||||
mb_strlen($formattingPattern->getDomesticCarrierCodeFormattingRule()) > 0
|
||||
$carrierCode !== null && $carrierCode !== '' &&
|
||||
$formattingPattern->getDomesticCarrierCodeFormattingRule() !== ''
|
||||
) {
|
||||
// Replace the $CC in the formatting rule with the desired carrier code.
|
||||
$carrierCodeFormattingRule = $formattingPattern->getDomesticCarrierCodeFormattingRule();
|
||||
@@ -1586,7 +1663,7 @@ class PhoneNumberUtil
|
||||
// Attempt to parse extension first, since it doesn't require region-specific data and we want
|
||||
// to have the non-normalised number here.
|
||||
$extension = $this->maybeStripExtension($nationalNumber);
|
||||
if (mb_strlen($extension) > 0) {
|
||||
if ($extension !== '') {
|
||||
$phoneNumber->setExtension($extension);
|
||||
}
|
||||
|
||||
@@ -1662,7 +1739,7 @@ class PhoneNumberUtil
|
||||
&& $validationResult !== ValidationResult::IS_POSSIBLE_LOCAL_ONLY
|
||||
&& $validationResult !== ValidationResult::INVALID_LENGTH) {
|
||||
$normalizedNationalNumber = $potentialNationalNumber;
|
||||
if ($keepRawInput && mb_strlen($carrierCode) > 0) {
|
||||
if ($keepRawInput && $carrierCode !== '') {
|
||||
$phoneNumber->setPreferredDomesticCarrierCode($carrierCode);
|
||||
}
|
||||
}
|
||||
@@ -1712,7 +1789,7 @@ class PhoneNumberUtil
|
||||
$phoneNumber = new PhoneNumber();
|
||||
$phoneNumber->setCountryCode($phoneNumberIn->getCountryCode());
|
||||
$phoneNumber->setNationalNumber($phoneNumberIn->getNationalNumber());
|
||||
if (mb_strlen($phoneNumberIn->getExtension()) > 0) {
|
||||
if ($phoneNumberIn->getExtension() != '') {
|
||||
$phoneNumber->setExtension($phoneNumberIn->getExtension());
|
||||
}
|
||||
if ($phoneNumberIn->isItalianLeadingZero()) {
|
||||
@@ -1756,8 +1833,11 @@ class PhoneNumberUtil
|
||||
|
||||
$indexOfRfc3966Prefix = strpos($numberToParse, static::RFC3966_PREFIX);
|
||||
$indexOfNationalNumber = ($indexOfRfc3966Prefix !== false) ? $indexOfRfc3966Prefix + strlen(static::RFC3966_PREFIX) : 0;
|
||||
$nationalNumber .= substr($numberToParse, $indexOfNationalNumber,
|
||||
$indexOfPhoneContext - $indexOfNationalNumber);
|
||||
$nationalNumber .= substr(
|
||||
$numberToParse,
|
||||
$indexOfNationalNumber,
|
||||
$indexOfPhoneContext - $indexOfNationalNumber
|
||||
);
|
||||
} else {
|
||||
// Extract a possible number from the string passed in (this strips leading characters that
|
||||
// could not be the start of a phone number.)
|
||||
@@ -1832,7 +1912,7 @@ class PhoneNumberUtil
|
||||
if (!$this->isValidRegionCode($defaultRegion)) {
|
||||
// If the number is null or empty, we can't infer the region.
|
||||
$plusCharsPatternMatcher = new Matcher(static::$PLUS_CHARS_PATTERN, $numberToParse);
|
||||
if ($numberToParse === null || mb_strlen($numberToParse) == 0 || !$plusCharsPatternMatcher->lookingAt()) {
|
||||
if ($numberToParse === null || $numberToParse === '' || !$plusCharsPatternMatcher->lookingAt()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1878,7 +1958,7 @@ class PhoneNumberUtil
|
||||
$keepRawInput,
|
||||
PhoneNumber $phoneNumber
|
||||
) {
|
||||
if (mb_strlen($number) == 0) {
|
||||
if ($number === '') {
|
||||
return 0;
|
||||
}
|
||||
$fullNumber = $number;
|
||||
@@ -1966,7 +2046,7 @@ class PhoneNumberUtil
|
||||
*/
|
||||
public function maybeStripInternationalPrefixAndNormalize(&$number, $possibleIddPrefix)
|
||||
{
|
||||
if (mb_strlen($number) == 0) {
|
||||
if ($number === '') {
|
||||
return CountryCodeSource::FROM_DEFAULT_COUNTRY;
|
||||
}
|
||||
$matches = array();
|
||||
@@ -2089,7 +2169,7 @@ class PhoneNumberUtil
|
||||
*/
|
||||
public function extractCountryCode($fullNumber, &$nationalNumber)
|
||||
{
|
||||
if ((mb_strlen($fullNumber) == 0) || ($fullNumber[0] == '0')) {
|
||||
if (($fullNumber === '') || ($fullNumber[0] == '0')) {
|
||||
// Country codes do not begin with a '0'.
|
||||
return 0;
|
||||
}
|
||||
@@ -2117,7 +2197,7 @@ class PhoneNumberUtil
|
||||
{
|
||||
$numberLength = mb_strlen($number);
|
||||
$possibleNationalPrefix = $metadata->getNationalPrefixForParsing();
|
||||
if ($numberLength == 0 || $possibleNationalPrefix === null || mb_strlen($possibleNationalPrefix) == 0) {
|
||||
if ($numberLength == 0 || $possibleNationalPrefix === null || $possibleNationalPrefix === '') {
|
||||
// Early return for numbers of zero length.
|
||||
return false;
|
||||
}
|
||||
@@ -2134,13 +2214,16 @@ class PhoneNumberUtil
|
||||
$numOfGroups = $prefixMatcher->groupCount();
|
||||
$transformRule = $metadata->getNationalPrefixTransformRule();
|
||||
if ($transformRule === null
|
||||
|| mb_strlen($transformRule) == 0
|
||||
|| $transformRule === ''
|
||||
|| $prefixMatcher->group($numOfGroups - 1) === null
|
||||
) {
|
||||
// If the original number was viable, and the resultant number is not, we return.
|
||||
if ($isViableOriginalNumber &&
|
||||
!$this->matcherAPI->matchNationalNumber(
|
||||
substr($number, $prefixMatcher->end()), $generalDesc, false)) {
|
||||
substr($number, $prefixMatcher->end()),
|
||||
$generalDesc,
|
||||
false
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
if ($carrierCode !== null && $numOfGroups > 0 && $prefixMatcher->group($numOfGroups) !== null) {
|
||||
@@ -2175,7 +2258,7 @@ class PhoneNumberUtil
|
||||
|
||||
/**
|
||||
* Convenience wrapper around isPossibleNumberForTypeWithReason. Instead of returning the reason
|
||||
* reason for failure, this method returns true if the number is either a possible fully-qualified
|
||||
* for failure, this method returns true if the number is either a possible fully-qualified
|
||||
* number (containing the area code and country code), or if the number could be a possible local
|
||||
* number (with a country code, but missing an area code). Local numbers are considered possible
|
||||
* if they could be possibly dialled in this format: if the area code is needed for a call to
|
||||
@@ -2227,9 +2310,11 @@ class PhoneNumberUtil
|
||||
// Note that when adding the possible lengths from mobile, we have to again check they
|
||||
// aren't empty since if they are this indicates they are the same as the general desc and
|
||||
// should be obtained from there.
|
||||
$possibleLengths = array_merge($possibleLengths,
|
||||
$possibleLengths = array_merge(
|
||||
$possibleLengths,
|
||||
(count($mobileDesc->getPossibleLength()) === 0)
|
||||
? $metadata->getGeneralDesc()->getPossibleLength() : $mobileDesc->getPossibleLength());
|
||||
? $metadata->getGeneralDesc()->getPossibleLength() : $mobileDesc->getPossibleLength()
|
||||
);
|
||||
|
||||
// The current list is sorted; we need to merge in the new list and re-sort (duplicates
|
||||
// are okay). Sorting isn't so expensive because the lists are very small.
|
||||
@@ -2348,33 +2433,19 @@ class PhoneNumberUtil
|
||||
$regionCode = $this->getRegionCodeForCountryCode($countryCallingCode);
|
||||
$numberType = $this->getNumberType($numberNoExt);
|
||||
$isValidNumber = ($numberType !== PhoneNumberType::UNKNOWN);
|
||||
if ($regionCallingFrom == $regionCode) {
|
||||
$isFixedLineOrMobile = ($numberType == PhoneNumberType::FIXED_LINE) || ($numberType == PhoneNumberType::MOBILE) || ($numberType == PhoneNumberType::FIXED_LINE_OR_MOBILE);
|
||||
if (strtoupper($regionCallingFrom) === $regionCode) {
|
||||
$isFixedLineOrMobile = ($numberType == PhoneNumberType::FIXED_LINE || $numberType == PhoneNumberType::MOBILE || $numberType == PhoneNumberType::FIXED_LINE_OR_MOBILE);
|
||||
// Carrier codes may be needed in some countries. We handle this here.
|
||||
if ($regionCode == 'CO' && $numberType == PhoneNumberType::FIXED_LINE) {
|
||||
$formattedNumber = $this->formatNationalNumberWithCarrierCode(
|
||||
$numberNoExt,
|
||||
static::COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX
|
||||
);
|
||||
} elseif ($regionCode == 'BR' && $isFixedLineOrMobile) {
|
||||
if ($regionCode === 'BR' && $isFixedLineOrMobile) {
|
||||
// Historically, we set this to an empty string when parsing with raw input if none was
|
||||
// found in the input string. However, this doesn't result in a number we can dial. For this
|
||||
// reason, we treat the empty string the same as if it isn't set at all.
|
||||
$formattedNumber = mb_strlen($numberNoExt->getPreferredDomesticCarrierCode()) > 0
|
||||
$formattedNumber = $numberNoExt->getPreferredDomesticCarrierCode() !== ''
|
||||
? $this->formatNationalNumberWithPreferredCarrierCode($numberNoExt, '')
|
||||
// Brazilian fixed line and mobile numbers need to be dialed with a carrier code when
|
||||
// called within Brazil. Without that, most of the carriers won't connect the call.
|
||||
// Because of that, we return an empty string here.
|
||||
: '';
|
||||
} elseif ($isValidNumber && $regionCode == 'HU') {
|
||||
// The national format for HU numbers doesn't contain the national prefix, because that is
|
||||
// how numbers are normally written down. However, the national prefix is obligatory when
|
||||
// dialing from a mobile phone, except for short numbers. As a result, we add it back here
|
||||
// if it is a valid regular length phone number.
|
||||
$formattedNumber = $this->getNddPrefixForRegion(
|
||||
$regionCode,
|
||||
true /* strip non-digits */
|
||||
) . ' ' . $this->format($numberNoExt, PhoneNumberFormat::NATIONAL);
|
||||
} elseif ($countryCallingCode === static::NANPA_COUNTRY_CODE) {
|
||||
// For NANPA countries, we output international format for numbers that can be dialed
|
||||
// internationally, since that always works, except for numbers which might potentially be
|
||||
@@ -2388,7 +2459,8 @@ class PhoneNumberUtil
|
||||
} else {
|
||||
$formattedNumber = $this->format($numberNoExt, PhoneNumberFormat::NATIONAL);
|
||||
}
|
||||
} elseif (($regionCode == static::REGION_CODE_FOR_NON_GEO_ENTITY ||
|
||||
} elseif ((
|
||||
$regionCode == static::REGION_CODE_FOR_NON_GEO_ENTITY ||
|
||||
// MX fixed line and mobile numbers should always be formatted in international format,
|
||||
// even when dialed within MX. For national format to work, a carrier code needs to be
|
||||
// used, and the correct carrier code depends on if the caller and callee are from the
|
||||
@@ -2401,7 +2473,7 @@ class PhoneNumberUtil
|
||||
($regionCode === 'MX' || $regionCode === 'CL' || $regionCode === 'UZ')
|
||||
&& $isFixedLineOrMobile
|
||||
)
|
||||
) && $this->canBeInternationallyDialled($numberNoExt)
|
||||
) && $this->canBeInternationallyDialled($numberNoExt)
|
||||
) {
|
||||
$formattedNumber = $this->format($numberNoExt, PhoneNumberFormat::INTERNATIONAL);
|
||||
} else {
|
||||
@@ -2483,7 +2555,7 @@ class PhoneNumberUtil
|
||||
// Historically, we set this to an empty string when parsing with raw input if none was
|
||||
// found in the input string. However, this doesn't result in a number we can dial. For this
|
||||
// reason, we treat the empty string the same as if it isn't set at all.
|
||||
mb_strlen($number->getPreferredDomesticCarrierCode()) > 0
|
||||
$number->getPreferredDomesticCarrierCode() != ''
|
||||
? $number->getPreferredDomesticCarrierCode()
|
||||
: $fallbackCarrierCode
|
||||
);
|
||||
@@ -2555,7 +2627,7 @@ class PhoneNumberUtil
|
||||
$rawInput = $number->getRawInput();
|
||||
// If there is no raw input, then we can't keep alpha characters because there aren't any.
|
||||
// In this case, we return formatOutOfCountryCallingNumber.
|
||||
if (mb_strlen($rawInput) == 0) {
|
||||
if ($rawInput === null || $rawInput === '') {
|
||||
return $this->formatOutOfCountryCallingNumber($number, $regionCallingFrom);
|
||||
}
|
||||
$countryCode = $number->getCountryCode();
|
||||
@@ -2630,7 +2702,7 @@ class PhoneNumberUtil
|
||||
PhoneNumberFormat::INTERNATIONAL,
|
||||
$formattedNumber
|
||||
);
|
||||
if (mb_strlen($internationalPrefixForFormatting) > 0) {
|
||||
if ($internationalPrefixForFormatting != '') {
|
||||
$formattedNumber = $internationalPrefixForFormatting . ' ' . $countryCode . ' ' . $formattedNumber;
|
||||
} else {
|
||||
// Invalid region entered as country-calling-from (so no metadata was found for it) or the
|
||||
@@ -2687,23 +2759,28 @@ class PhoneNumberUtil
|
||||
return $this->format($number, PhoneNumberFormat::NATIONAL);
|
||||
}
|
||||
// Metadata cannot be null because we checked 'isValidRegionCode()' above.
|
||||
/** @var PhoneMetadata $metadataForRegionCallingFrom */
|
||||
$metadataForRegionCallingFrom = $this->getMetadataForRegion($regionCallingFrom);
|
||||
|
||||
$internationalPrefix = $metadataForRegionCallingFrom->getInternationalPrefix();
|
||||
|
||||
// For regions that have multiple international prefixes, the international format of the
|
||||
// number is returned, unless there is a preferred international prefix.
|
||||
// In general, if there is a preferred international prefix, use that. Otherwise, for regions
|
||||
// that have multiple international prefixes, the international format of the number is
|
||||
// returned since we would not know which one to use.
|
||||
$internationalPrefixForFormatting = '';
|
||||
$uniqueInternationalPrefixMatcher = new Matcher(static::SINGLE_INTERNATIONAL_PREFIX, $internationalPrefix);
|
||||
|
||||
if ($uniqueInternationalPrefixMatcher->matches()) {
|
||||
$internationalPrefixForFormatting = $internationalPrefix;
|
||||
} elseif ($metadataForRegionCallingFrom->hasPreferredInternationalPrefix()) {
|
||||
if ($metadataForRegionCallingFrom->hasPreferredInternationalPrefix()) {
|
||||
$internationalPrefixForFormatting = $metadataForRegionCallingFrom->getPreferredInternationalPrefix();
|
||||
} else {
|
||||
$uniqueInternationalPrefixMatcher = new Matcher(static::SINGLE_INTERNATIONAL_PREFIX, $internationalPrefix);
|
||||
|
||||
if ($uniqueInternationalPrefixMatcher->matches()) {
|
||||
$internationalPrefixForFormatting = $internationalPrefix;
|
||||
}
|
||||
}
|
||||
|
||||
$regionCode = $this->getRegionCodeForCountryCode($countryCallingCode);
|
||||
// Metadata cannot be null because the country calling code is valid.
|
||||
/** @var PhoneMetadata $metadataForRegion */
|
||||
$metadataForRegion = $this->getMetadataForRegionOrCallingCode($countryCallingCode, $regionCode);
|
||||
$formattedNationalNumber = $this->formatNsn(
|
||||
$nationalSignificantNumber,
|
||||
@@ -2717,7 +2794,7 @@ class PhoneNumberUtil
|
||||
PhoneNumberFormat::INTERNATIONAL,
|
||||
$formattedNumber
|
||||
);
|
||||
if (mb_strlen($internationalPrefixForFormatting) > 0) {
|
||||
if ($internationalPrefixForFormatting !== '') {
|
||||
$formattedNumber = $internationalPrefixForFormatting . ' ' . $countryCallingCode . ' ' . $formattedNumber;
|
||||
} else {
|
||||
$this->prefixNumberWithCountryCallingCode(
|
||||
@@ -2736,15 +2813,17 @@ class PhoneNumberUtil
|
||||
*/
|
||||
public function isNANPACountry($regionCode)
|
||||
{
|
||||
return in_array($regionCode, $this->nanpaRegions);
|
||||
return in_array(strtoupper((string)$regionCode), $this->nanpaRegions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a phone number using the original phone number format that the number is parsed from.
|
||||
* Formats a phone number using the original phone number format (e.g. INTERNATIONAL or NATIONAL)
|
||||
* that the number is parsed from, provided that the number has been parsed with
|
||||
* parseAndKeepRawInput. Otherwise the number will be formatted in NATIONAL format.
|
||||
*
|
||||
* The original format is embedded in the country_code_source field of the PhoneNumber object
|
||||
* passed in. If such information is missing, the number will be formatted into the NATIONAL
|
||||
* format by default. When we don't have a formatting pattern for the number, the method returns
|
||||
* the raw inptu when it is available.
|
||||
* passed in, which is only set when parsing keeps the raw input. When we don't have a formatting
|
||||
* pattern for the number, the method falls back to returning the raw input.
|
||||
*
|
||||
* Note this method guarantees no digit will be inserted, removed or modified as a result of
|
||||
* formatting.
|
||||
@@ -2783,7 +2862,7 @@ class PhoneNumberUtil
|
||||
// compare them easily.
|
||||
$nationalPrefix = $this->getNddPrefixForRegion($regionCode, true /* strip non-digits */);
|
||||
$nationalFormat = $this->format($number, PhoneNumberFormat::NATIONAL);
|
||||
if ($nationalPrefix === null || mb_strlen($nationalPrefix) == 0) {
|
||||
if ($nationalPrefix === null || $nationalPrefix === '') {
|
||||
// If the region doesn't have a national prefix at all, we can safely return the national
|
||||
// format without worrying about a national prefix being added.
|
||||
$formattedNumber = $nationalFormat;
|
||||
@@ -2824,7 +2903,7 @@ class PhoneNumberUtil
|
||||
}
|
||||
$candidateNationalPrefixRule = substr($candidateNationalPrefixRule, 0, $indexOfFirstGroup);
|
||||
$candidateNationalPrefixRule = static::normalizeDigitsOnly($candidateNationalPrefixRule);
|
||||
if (mb_strlen($candidateNationalPrefixRule) == 0) {
|
||||
if ($candidateNationalPrefixRule === '') {
|
||||
// National prefix not used when formatting this number.
|
||||
$formattedNumber = $nationalFormat;
|
||||
break;
|
||||
@@ -2890,7 +2969,7 @@ class PhoneNumberUtil
|
||||
}
|
||||
$nationalPrefix = $metadata->getNationalPrefix();
|
||||
// If no national prefix was found, we return null.
|
||||
if (mb_strlen($nationalPrefix) == 0) {
|
||||
if ($nationalPrefix == '') {
|
||||
return null;
|
||||
}
|
||||
if ($stripNonDigits) {
|
||||
@@ -3044,7 +3123,7 @@ class PhoneNumberUtil
|
||||
// share a country calling code is contained by only one region for performance reasons. For
|
||||
// example, for NANPA regions it will be contained in the metadata for US.
|
||||
$regionCode = $this->getRegionCodeForCountryCode($countryCallingCode);
|
||||
// Metadata cannot be null because the country calling code is valid
|
||||
// Metadata cannot be null because the country calling code is valid.
|
||||
$metadata = $this->getMetadataForRegionOrCallingCode($countryCallingCode, $regionCode);
|
||||
|
||||
$formattedNumber = '';
|
||||
@@ -3060,12 +3139,15 @@ class PhoneNumberUtil
|
||||
// appropriate national prefix.
|
||||
$numFormatCopy->mergeFrom($formattingPattern);
|
||||
$nationalPrefixFormattingRule = $formattingPattern->getNationalPrefixFormattingRule();
|
||||
if (mb_strlen($nationalPrefixFormattingRule) > 0) {
|
||||
if ($nationalPrefixFormattingRule !== '') {
|
||||
$nationalPrefix = $metadata->getNationalPrefix();
|
||||
if (mb_strlen($nationalPrefix) > 0) {
|
||||
if ($nationalPrefix != '') {
|
||||
// Replace $NP with national prefix and $FG with the first group ($1).
|
||||
$nationalPrefixFormattingRule = str_replace(array(static::NP_STRING, static::FG_STRING),
|
||||
array($nationalPrefix, '$1'), $nationalPrefixFormattingRule);
|
||||
$nationalPrefixFormattingRule = str_replace(
|
||||
array(static::NP_STRING, static::FG_STRING),
|
||||
array($nationalPrefix, '$1'),
|
||||
$nationalPrefixFormattingRule
|
||||
);
|
||||
$numFormatCopy->setNationalPrefixFormattingRule($nationalPrefixFormattingRule);
|
||||
} else {
|
||||
// We don't want to have a rule for how to format the national prefix if there isn't one.
|
||||
@@ -3155,7 +3237,7 @@ class PhoneNumberUtil
|
||||
*
|
||||
* @param string|int $regionCodeOrType the region for which an example number is needed
|
||||
* @param int $type the PhoneNumberType of number that is needed
|
||||
* @return PhoneNumber a valid number for the specified region and type. Returns null when the metadata
|
||||
* @return PhoneNumber|null a valid number for the specified region and type. Returns null when the metadata
|
||||
* does not contain such information or if an invalid region or region 001 was entered.
|
||||
* For 001 (representing non-geographical numbers), call
|
||||
* {@link #getExampleNumberForNonGeoEntity} instead.
|
||||
@@ -3176,7 +3258,7 @@ class PhoneNumberUtil
|
||||
}
|
||||
}
|
||||
|
||||
// If there wasn't an example number for a region, try the non-geographical entities
|
||||
// If there wasn't an example number for a region, try the non-geographical entities.
|
||||
foreach ($this->getSupportedGlobalNetworkCallingCodes() as $countryCallingCode) {
|
||||
$desc = $this->getNumberDescByType($this->getMetadataForNonGeographicalRegion($countryCallingCode), $regionCodeOrType);
|
||||
try {
|
||||
@@ -3423,6 +3505,13 @@ class PhoneNumberUtil
|
||||
$this->stringEndsWithString($secondNumberNationalNumber, $firstNumberNationalNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if a string ends with a given substring, false otherwise.
|
||||
*
|
||||
* @param string $hayStack
|
||||
* @param string $needle
|
||||
* @return bool
|
||||
*/
|
||||
protected function stringEndsWithString($hayStack, $needle)
|
||||
{
|
||||
$revNeedle = strrev($needle);
|
||||
@@ -3455,7 +3544,7 @@ class PhoneNumberUtil
|
||||
*
|
||||
* Convenience wrapper around {@link #isPossibleNumberWithReason}. Instead of returning the reason
|
||||
* for failure, this method returns a boolean value.
|
||||
* for failure, this method returns true if the number is either a possible fully-qualified number
|
||||
* For failure, this method returns true if the number is either a possible fully-qualified number
|
||||
* (containing the area code and country code), or if the number could be a possible local number
|
||||
* (with a country code, but missing an area code). Local numbers are considered possible if they
|
||||
* could be possibly dialled in this format: if the area code is needed for a call to connect, the
|
||||
@@ -3479,7 +3568,7 @@ class PhoneNumberUtil
|
||||
*/
|
||||
public function isPossibleNumber($number, $regionDialingFrom = null)
|
||||
{
|
||||
if ($regionDialingFrom !== null && is_string($number)) {
|
||||
if (is_string($number)) {
|
||||
try {
|
||||
return $this->isPossibleNumber($this->parse($number, $regionDialingFrom));
|
||||
} catch (NumberParseException $e) {
|
||||
@@ -3570,6 +3659,7 @@ class PhoneNumberUtil
|
||||
* Attempts to extract a valid number from a phone number that is too long to be valid, and resets
|
||||
* the PhoneNumber object passed in to that valid version. If no valid number could be extracted,
|
||||
* the PhoneNumber object passed in will not be modified.
|
||||
*
|
||||
* @param PhoneNumber $number a PhoneNumber object which contains a number that is too long to be valid.
|
||||
* @return boolean true if a valid phone number can be successfully extracted.
|
||||
*/
|
||||
|
@@ -30,7 +30,7 @@ class RegexBasedMatcher implements MatcherAPIInterface
|
||||
// We don't want to consider it a prefix match when matching non-empty input against an empty
|
||||
// pattern
|
||||
|
||||
if (strlen($nationalNumberPattern) === 0) {
|
||||
if (\strlen($nationalNumberPattern) === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -19,6 +19,7 @@ namespace libphonenumber;
|
||||
|
||||
/**
|
||||
* Class containing string constants of region codes for easier testing.
|
||||
* @internal
|
||||
*/
|
||||
class RegionCode
|
||||
{
|
||||
@@ -39,6 +40,7 @@ class RegionCode
|
||||
const CH = 'CH';
|
||||
const CL = 'CL';
|
||||
const CN = 'CN';
|
||||
const CO = 'CO';
|
||||
const CS = 'CS';
|
||||
const CX = 'CX';
|
||||
const DE = 'DE';
|
||||
|
@@ -92,9 +92,13 @@ class ShortNumberInfo
|
||||
*/
|
||||
protected function regionDialingFromMatchesNumber(PhoneNumber $number, $regionDialingFrom)
|
||||
{
|
||||
if ($regionDialingFrom === null || $regionDialingFrom === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
|
||||
|
||||
return in_array($regionDialingFrom, $regionCodes);
|
||||
return in_array(strtoupper($regionDialingFrom), $regionCodes);
|
||||
}
|
||||
|
||||
public function getSupportedRegions()
|
||||
@@ -130,6 +134,8 @@ class ShortNumberInfo
|
||||
*/
|
||||
public function getMetadataForRegion($regionCode)
|
||||
{
|
||||
$regionCode = strtoupper((string)$regionCode);
|
||||
|
||||
if (!in_array($regionCode, ShortNumbersRegionCodeSet::$shortNumbersRegionCodeSet)) {
|
||||
return null;
|
||||
}
|
||||
@@ -246,8 +252,9 @@ class ShortNumberInfo
|
||||
$normalizedNumber = PhoneNumberUtil::normalizeDigitsOnly($number);
|
||||
$emergencyDesc = $metadata->getEmergency();
|
||||
|
||||
$allowPrefixMatchForRegion = ($allowPrefixMatch
|
||||
&& !in_array($regionCode, static::$regionsWhereEmergencyNumbersMustBeExact)
|
||||
$allowPrefixMatchForRegion = (
|
||||
$allowPrefixMatch
|
||||
&& !in_array(strtoupper($regionCode), static::$regionsWhereEmergencyNumbersMustBeExact)
|
||||
);
|
||||
|
||||
return $this->matcherAPI->matchNationalNumber($normalizedNumber, $emergencyDesc, $allowPrefixMatchForRegion);
|
||||
|
@@ -218,45 +218,46 @@ class ShortNumbersRegionCodeSet {
|
||||
198 => 'SN',
|
||||
199 => 'SO',
|
||||
200 => 'SR',
|
||||
201 => 'ST',
|
||||
202 => 'SV',
|
||||
203 => 'SX',
|
||||
204 => 'SY',
|
||||
205 => 'SZ',
|
||||
206 => 'TC',
|
||||
207 => 'TD',
|
||||
208 => 'TG',
|
||||
209 => 'TH',
|
||||
210 => 'TJ',
|
||||
211 => 'TL',
|
||||
212 => 'TM',
|
||||
213 => 'TN',
|
||||
214 => 'TO',
|
||||
215 => 'TR',
|
||||
216 => 'TT',
|
||||
217 => 'TV',
|
||||
218 => 'TW',
|
||||
219 => 'TZ',
|
||||
220 => 'UA',
|
||||
221 => 'UG',
|
||||
222 => 'US',
|
||||
223 => 'UY',
|
||||
224 => 'UZ',
|
||||
225 => 'VA',
|
||||
226 => 'VC',
|
||||
227 => 'VE',
|
||||
228 => 'VG',
|
||||
229 => 'VI',
|
||||
230 => 'VN',
|
||||
231 => 'VU',
|
||||
232 => 'WF',
|
||||
233 => 'WS',
|
||||
234 => 'XK',
|
||||
235 => 'YE',
|
||||
236 => 'YT',
|
||||
237 => 'ZA',
|
||||
238 => 'ZM',
|
||||
239 => 'ZW',
|
||||
201 => 'SS',
|
||||
202 => 'ST',
|
||||
203 => 'SV',
|
||||
204 => 'SX',
|
||||
205 => 'SY',
|
||||
206 => 'SZ',
|
||||
207 => 'TC',
|
||||
208 => 'TD',
|
||||
209 => 'TG',
|
||||
210 => 'TH',
|
||||
211 => 'TJ',
|
||||
212 => 'TL',
|
||||
213 => 'TM',
|
||||
214 => 'TN',
|
||||
215 => 'TO',
|
||||
216 => 'TR',
|
||||
217 => 'TT',
|
||||
218 => 'TV',
|
||||
219 => 'TW',
|
||||
220 => 'TZ',
|
||||
221 => 'UA',
|
||||
222 => 'UG',
|
||||
223 => 'US',
|
||||
224 => 'UY',
|
||||
225 => 'UZ',
|
||||
226 => 'VA',
|
||||
227 => 'VC',
|
||||
228 => 'VE',
|
||||
229 => 'VG',
|
||||
230 => 'VI',
|
||||
231 => 'VN',
|
||||
232 => 'VU',
|
||||
233 => 'WF',
|
||||
234 => 'WS',
|
||||
235 => 'XK',
|
||||
236 => 'YE',
|
||||
237 => 'YT',
|
||||
238 => 'ZA',
|
||||
239 => 'ZM',
|
||||
240 => 'ZW',
|
||||
);
|
||||
|
||||
}
|
||||
|
@@ -27,186 +27,216 @@ return array (
|
||||
3 => 212,
|
||||
4 => 213,
|
||||
5 => 216,
|
||||
6 => 220,
|
||||
7 => 221,
|
||||
8 => 222,
|
||||
9 => 223,
|
||||
10 => 224,
|
||||
11 => 225,
|
||||
12 => 226,
|
||||
13 => 227,
|
||||
14 => 228,
|
||||
15 => 229,
|
||||
16 => 230,
|
||||
17 => 231,
|
||||
18 => 232,
|
||||
19 => 233,
|
||||
20 => 234,
|
||||
21 => 235,
|
||||
22 => 236,
|
||||
23 => 237,
|
||||
24 => 238,
|
||||
25 => 239,
|
||||
26 => 240,
|
||||
27 => 241,
|
||||
28 => 242,
|
||||
29 => 243,
|
||||
30 => 244,
|
||||
31 => 245,
|
||||
32 => 248,
|
||||
33 => 249,
|
||||
34 => 250,
|
||||
35 => 251,
|
||||
36 => 252,
|
||||
37 => 253,
|
||||
38 => 254,
|
||||
39 => 255,
|
||||
40 => 256,
|
||||
41 => 257,
|
||||
42 => 258,
|
||||
43 => 260,
|
||||
44 => 261,
|
||||
45 => 262,
|
||||
46 => 263,
|
||||
47 => 264,
|
||||
48 => 265,
|
||||
49 => 267,
|
||||
50 => 268,
|
||||
51 => 269,
|
||||
52 => 27,
|
||||
53 => 297,
|
||||
54 => 298,
|
||||
55 => 299,
|
||||
56 => 30,
|
||||
57 => 31,
|
||||
58 => 32,
|
||||
59 => 33,
|
||||
60 => 34,
|
||||
61 => 350,
|
||||
62 => 351,
|
||||
63 => 352,
|
||||
64 => 353,
|
||||
65 => 354,
|
||||
66 => 355,
|
||||
67 => 356,
|
||||
68 => 357,
|
||||
69 => 358,
|
||||
70 => 359,
|
||||
71 => 36,
|
||||
72 => 370,
|
||||
73 => 372,
|
||||
74 => 373,
|
||||
75 => 374,
|
||||
76 => 375,
|
||||
77 => 376,
|
||||
78 => 380,
|
||||
79 => 381,
|
||||
80 => 382,
|
||||
81 => 383,
|
||||
82 => 385,
|
||||
83 => 386,
|
||||
84 => 387,
|
||||
85 => 389,
|
||||
86 => 39,
|
||||
87 => 40,
|
||||
88 => 41,
|
||||
89 => 420,
|
||||
90 => 421,
|
||||
91 => 423,
|
||||
92 => 43,
|
||||
93 => 44,
|
||||
94 => 45,
|
||||
95 => 47,
|
||||
96 => 48,
|
||||
97 => 49,
|
||||
98 => 502,
|
||||
99 => 503,
|
||||
100 => 505,
|
||||
101 => 506,
|
||||
102 => 507,
|
||||
103 => 508,
|
||||
104 => 509,
|
||||
105 => 51,
|
||||
106 => 53,
|
||||
107 => 54,
|
||||
108 => 55,
|
||||
109 => 56,
|
||||
110 => 57,
|
||||
111 => 58,
|
||||
112 => 590,
|
||||
113 => 591,
|
||||
114 => 592,
|
||||
115 => 593,
|
||||
116 => 594,
|
||||
117 => 595,
|
||||
118 => 596,
|
||||
119 => 597,
|
||||
120 => 598,
|
||||
121 => 599,
|
||||
122 => 60,
|
||||
123 => 61,
|
||||
124 => 62,
|
||||
125 => 63,
|
||||
126 => 64,
|
||||
127 => 65,
|
||||
128 => 66,
|
||||
129 => 670,
|
||||
130 => 673,
|
||||
131 => 674,
|
||||
132 => 675,
|
||||
133 => 677,
|
||||
134 => 678,
|
||||
135 => 679,
|
||||
136 => 680,
|
||||
137 => 685,
|
||||
138 => 686,
|
||||
139 => 688,
|
||||
140 => 689,
|
||||
141 => 7,
|
||||
142 => 84,
|
||||
143 => 852,
|
||||
144 => 853,
|
||||
145 => 855,
|
||||
146 => 856,
|
||||
147 => 86,
|
||||
148 => 880,
|
||||
149 => 886,
|
||||
150 => 90,
|
||||
151 => 91,
|
||||
152 => 92,
|
||||
153 => 93,
|
||||
154 => 94,
|
||||
155 => 95,
|
||||
156 => 960,
|
||||
157 => 961,
|
||||
158 => 962,
|
||||
159 => 963,
|
||||
160 => 964,
|
||||
161 => 965,
|
||||
162 => 966,
|
||||
163 => 967,
|
||||
164 => 968,
|
||||
165 => 970,
|
||||
166 => 971,
|
||||
167 => 972,
|
||||
168 => 973,
|
||||
169 => 974,
|
||||
170 => 975,
|
||||
171 => 976,
|
||||
172 => 977,
|
||||
173 => 98,
|
||||
174 => 992,
|
||||
175 => 993,
|
||||
176 => 994,
|
||||
177 => 995,
|
||||
178 => 996,
|
||||
179 => 998,
|
||||
6 => 218,
|
||||
7 => 220,
|
||||
8 => 221,
|
||||
9 => 222,
|
||||
10 => 223,
|
||||
11 => 224,
|
||||
12 => 225,
|
||||
13 => 226,
|
||||
14 => 227,
|
||||
15 => 228,
|
||||
16 => 229,
|
||||
17 => 230,
|
||||
18 => 231,
|
||||
19 => 232,
|
||||
20 => 233,
|
||||
21 => 234,
|
||||
22 => 235,
|
||||
23 => 236,
|
||||
24 => 237,
|
||||
25 => 238,
|
||||
26 => 239,
|
||||
27 => 240,
|
||||
28 => 241,
|
||||
29 => 242,
|
||||
30 => 243,
|
||||
31 => 244,
|
||||
32 => 245,
|
||||
33 => 246,
|
||||
34 => 247,
|
||||
35 => 248,
|
||||
36 => 249,
|
||||
37 => 250,
|
||||
38 => 251,
|
||||
39 => 252,
|
||||
40 => 253,
|
||||
41 => 254,
|
||||
42 => 255,
|
||||
43 => 256,
|
||||
44 => 257,
|
||||
45 => 258,
|
||||
46 => 260,
|
||||
47 => 261,
|
||||
48 => 262,
|
||||
49 => 263,
|
||||
50 => 264,
|
||||
51 => 265,
|
||||
52 => 266,
|
||||
53 => 267,
|
||||
54 => 268,
|
||||
55 => 269,
|
||||
56 => 27,
|
||||
57 => 290,
|
||||
58 => 291,
|
||||
59 => 297,
|
||||
60 => 298,
|
||||
61 => 299,
|
||||
62 => 30,
|
||||
63 => 31,
|
||||
64 => 32,
|
||||
65 => 33,
|
||||
66 => 34,
|
||||
67 => 350,
|
||||
68 => 351,
|
||||
69 => 352,
|
||||
70 => 353,
|
||||
71 => 354,
|
||||
72 => 355,
|
||||
73 => 356,
|
||||
74 => 357,
|
||||
75 => 358,
|
||||
76 => 359,
|
||||
77 => 36,
|
||||
78 => 370,
|
||||
79 => 371,
|
||||
80 => 372,
|
||||
81 => 373,
|
||||
82 => 374,
|
||||
83 => 375,
|
||||
84 => 376,
|
||||
85 => 377,
|
||||
86 => 378,
|
||||
87 => 380,
|
||||
88 => 381,
|
||||
89 => 382,
|
||||
90 => 383,
|
||||
91 => 385,
|
||||
92 => 386,
|
||||
93 => 387,
|
||||
94 => 389,
|
||||
95 => 39,
|
||||
96 => 40,
|
||||
97 => 41,
|
||||
98 => 420,
|
||||
99 => 421,
|
||||
100 => 423,
|
||||
101 => 43,
|
||||
102 => 44,
|
||||
103 => 45,
|
||||
104 => 46,
|
||||
105 => 47,
|
||||
106 => 48,
|
||||
107 => 49,
|
||||
108 => 500,
|
||||
109 => 501,
|
||||
110 => 502,
|
||||
111 => 503,
|
||||
112 => 504,
|
||||
113 => 505,
|
||||
114 => 506,
|
||||
115 => 507,
|
||||
116 => 508,
|
||||
117 => 509,
|
||||
118 => 51,
|
||||
119 => 53,
|
||||
120 => 55,
|
||||
121 => 56,
|
||||
122 => 57,
|
||||
123 => 58,
|
||||
124 => 590,
|
||||
125 => 591,
|
||||
126 => 592,
|
||||
127 => 593,
|
||||
128 => 594,
|
||||
129 => 595,
|
||||
130 => 596,
|
||||
131 => 597,
|
||||
132 => 598,
|
||||
133 => 599,
|
||||
134 => 60,
|
||||
135 => 61,
|
||||
136 => 62,
|
||||
137 => 63,
|
||||
138 => 64,
|
||||
139 => 65,
|
||||
140 => 66,
|
||||
141 => 670,
|
||||
142 => 672,
|
||||
143 => 673,
|
||||
144 => 674,
|
||||
145 => 675,
|
||||
146 => 676,
|
||||
147 => 677,
|
||||
148 => 678,
|
||||
149 => 679,
|
||||
150 => 680,
|
||||
151 => 681,
|
||||
152 => 682,
|
||||
153 => 683,
|
||||
154 => 685,
|
||||
155 => 686,
|
||||
156 => 687,
|
||||
157 => 688,
|
||||
158 => 689,
|
||||
159 => 690,
|
||||
160 => 691,
|
||||
161 => 692,
|
||||
162 => 7,
|
||||
163 => 81,
|
||||
164 => 82,
|
||||
165 => 84,
|
||||
166 => 850,
|
||||
167 => 852,
|
||||
168 => 853,
|
||||
169 => 855,
|
||||
170 => 856,
|
||||
171 => 86,
|
||||
172 => 880,
|
||||
173 => 881,
|
||||
174 => 882,
|
||||
175 => 886,
|
||||
176 => 90,
|
||||
177 => 91,
|
||||
178 => 92,
|
||||
179 => 93,
|
||||
180 => 94,
|
||||
181 => 95,
|
||||
182 => 960,
|
||||
183 => 961,
|
||||
184 => 962,
|
||||
185 => 963,
|
||||
186 => 964,
|
||||
187 => 965,
|
||||
188 => 966,
|
||||
189 => 967,
|
||||
190 => 968,
|
||||
191 => 970,
|
||||
192 => 971,
|
||||
193 => 972,
|
||||
194 => 973,
|
||||
195 => 974,
|
||||
196 => 975,
|
||||
197 => 976,
|
||||
198 => 977,
|
||||
199 => 98,
|
||||
200 => 992,
|
||||
201 => 993,
|
||||
202 => 994,
|
||||
203 => 995,
|
||||
204 => 996,
|
||||
205 => 998,
|
||||
),
|
||||
'fa' =>
|
||||
array (
|
||||
0 => 93,
|
||||
1 => 98,
|
||||
),
|
||||
'ko' =>
|
||||
array (
|
||||
0 => 82,
|
||||
),
|
||||
'ru' =>
|
||||
array (
|
||||
0 => 374,
|
||||
|
@@ -12,6 +12,6 @@
|
||||
|
||||
return array (
|
||||
9655 => 'فيفا',
|
||||
9656 => 'الوطنية',
|
||||
9656 => 'أوريدو',
|
||||
9659 => 'زين',
|
||||
);
|
||||
|
@@ -48,13 +48,28 @@ return array (
|
||||
1246258 => 'Digicel',
|
||||
1246259 => 'Digicel',
|
||||
124626 => 'Digicel',
|
||||
124628 => 'LIME',
|
||||
124628 => 'Cable & Wireless',
|
||||
124635 => 'LIME',
|
||||
1246360 => 'LIME',
|
||||
1246361 => 'LIME',
|
||||
1246362 => 'LIME',
|
||||
1246363 => 'LIME',
|
||||
1246364 => 'LIME',
|
||||
1246365 => 'LIME',
|
||||
1246366 => 'LIME',
|
||||
1246446 => 'Neptune Communications',
|
||||
124645 => 'Sunbeach Communications',
|
||||
12465211 => 'Digicel',
|
||||
12465214 => 'LIME',
|
||||
12465217 => 'KW Telecommunications',
|
||||
1246522 => 'Ozone',
|
||||
124669 => 'Ozone',
|
||||
12468 => 'Digicel',
|
||||
1264469 => 'Cable & Wireless',
|
||||
126453 => 'Weblinks Limited',
|
||||
126458 => 'Digicel',
|
||||
12647 => 'Cable & Wireless',
|
||||
1264729 => 'Cable & Wireless',
|
||||
126477 => 'Cable & Wireless',
|
||||
126871 => 'Digicel',
|
||||
1268720 => 'Digicel',
|
||||
1268721 => 'Digicel',
|
||||
@@ -64,7 +79,10 @@ return array (
|
||||
1268726 => 'Digicel',
|
||||
1268727 => 'APUA',
|
||||
1268729 => 'APUA',
|
||||
126873 => 'Digicel',
|
||||
1268730 => 'APUA',
|
||||
1268732 => 'Digicel',
|
||||
1268734 => 'Digicel',
|
||||
1268736 => 'Digicel',
|
||||
1268773 => 'APUA',
|
||||
1268774 => 'APUA',
|
||||
1268775 => 'APUA',
|
||||
@@ -72,7 +90,9 @@ return array (
|
||||
1268781 => 'APUA',
|
||||
1268783 => 'Digicel',
|
||||
1268785 => 'Digicel',
|
||||
1268787 => 'Cable & Wireless',
|
||||
1268788 => 'Digicel',
|
||||
128424 => 'Cable & Wireless',
|
||||
1284300 => 'Digicel',
|
||||
128434 => 'Digicel',
|
||||
128436 => 'Digicel',
|
||||
@@ -84,12 +104,28 @@ return array (
|
||||
12844968 => 'CCT',
|
||||
12844969 => 'CCT',
|
||||
1284499 => 'CCT',
|
||||
13453 => 'Digicel',
|
||||
1284546 => 'Cable & Wireless',
|
||||
128456 => 'Cable & Wireless',
|
||||
128459 => 'Cable & Wireless',
|
||||
1340423 => 'Vitelcom Cellular',
|
||||
134044 => 'GIGSKY Mobile',
|
||||
1340725 => 'Vitelcom Cellular',
|
||||
134532 => 'Digicel',
|
||||
134542 => 'Digicel',
|
||||
134551 => 'Digicel',
|
||||
134552 => 'Digicel',
|
||||
134554 => 'Digicel',
|
||||
134555 => 'Digicel',
|
||||
1345649 => 'Digicel',
|
||||
134582 => 'Logic Communications',
|
||||
1345919 => 'Cable & Wireless',
|
||||
1345930 => 'LIME',
|
||||
1345936 => 'Cable & Wireless',
|
||||
1345937 => 'Cable & Wireless',
|
||||
1345938 => 'Cable & Wireless',
|
||||
1345939 => 'Cable & Wireless',
|
||||
134599 => 'Cable & Wireless',
|
||||
14412 => 'Cellular One',
|
||||
14413 => 'Mobility',
|
||||
144150 => 'Digicel Bermuda',
|
||||
144151 => 'Digicel Bermuda',
|
||||
@@ -97,16 +133,44 @@ return array (
|
||||
144153 => 'Digicel Bermuda',
|
||||
144159 => 'Digicel Bermuda',
|
||||
14417 => 'Cellular One',
|
||||
14418 => 'Cellular One',
|
||||
14419 => 'Deltronics',
|
||||
1473402 => 'Affordable Island Communications',
|
||||
147341 => 'Digicel Grenada',
|
||||
147342 => 'Digicel Grenada',
|
||||
147352 => 'Affordable Island Communications',
|
||||
147353 => 'AWS Grenada',
|
||||
147390 => 'Affordable Island Communications',
|
||||
16492 => 'C&W',
|
||||
164923 => 'C&W',
|
||||
164924 => 'Cable & Wireless',
|
||||
16493 => 'Digicel',
|
||||
164943 => 'Islandcom',
|
||||
167148 => 'GTA',
|
||||
1658295 => 'Cable & Wireless',
|
||||
1659200 => 'Onvoy',
|
||||
1659222 => 'Onvoy',
|
||||
1659300 => 'Onvoy',
|
||||
1659400 => 'Onvoy',
|
||||
1659444 => 'Onvoy',
|
||||
1659500 => 'Onvoy',
|
||||
1659529 => 'Fractel',
|
||||
1659600 => 'Onvoy',
|
||||
1659666 => 'Onvoy',
|
||||
1659766 => 'Fractel',
|
||||
1659777 => 'Onvoy',
|
||||
1659800 => 'Onvoy',
|
||||
1659888 => 'Fractel',
|
||||
1659900 => 'Onvoy',
|
||||
1659999 => 'Onvoy',
|
||||
166434 => 'Cable & Wireless',
|
||||
166439 => 'Digicel',
|
||||
1670284 => 'PTI PACIFICA',
|
||||
1671480 => 'GTA',
|
||||
1671482 => 'GTA',
|
||||
1671483 => 'GTA',
|
||||
1671486 => 'GTA',
|
||||
1671487 => 'GTA',
|
||||
1671488 => 'GTA',
|
||||
1671489 => 'GTA',
|
||||
167174 => 'PTI PACIFICA',
|
||||
167183 => 'i CAN_GSM',
|
||||
167184 => 'i CAN_GSM',
|
||||
@@ -116,9 +180,11 @@ return array (
|
||||
167187 => 'Choice Phone',
|
||||
167188 => 'Choice Phone',
|
||||
167189 => 'Choice Phone',
|
||||
16842 => 'Blue Sky',
|
||||
168424 => 'ASTCA',
|
||||
168425 => 'Blue Sky',
|
||||
168427 => 'Blue Sky',
|
||||
16847 => 'ASTCA',
|
||||
17582 => 'Cable & Wireless',
|
||||
175828 => 'Cable & Wireless',
|
||||
17583 => 'Cable & Wireless',
|
||||
1758460 => 'Cable & Wireless',
|
||||
1758461 => 'Cable & Wireless',
|
||||
@@ -131,7 +197,10 @@ return array (
|
||||
175851 => 'Digicel',
|
||||
175852 => 'Digicel',
|
||||
175858 => 'Cable & Wireless',
|
||||
17587 => 'Digicel',
|
||||
175871 => 'Digicel',
|
||||
175872 => 'Digicel',
|
||||
175873 => 'Digicel',
|
||||
17588 => 'Digicel',
|
||||
176722 => 'Cable & Wireless',
|
||||
176723 => 'Cable & Wireless',
|
||||
176724 => 'Cable & Wireless',
|
||||
@@ -141,6 +210,9 @@ return array (
|
||||
176729 => 'Cable & Wireless',
|
||||
17673 => 'Digicel',
|
||||
17676 => 'Digicel',
|
||||
1767704 => 'Digicel',
|
||||
1767705 => 'Digicel',
|
||||
1767706 => 'Digicel',
|
||||
1784430 => 'AT&T',
|
||||
1784431 => 'AT&T',
|
||||
1784432 => 'AT&T',
|
||||
@@ -158,6 +230,7 @@ return array (
|
||||
1784495 => 'Cable & Wireless',
|
||||
178452 => 'Digicel',
|
||||
178453 => 'Digicel',
|
||||
178472 => 'Digicel',
|
||||
1787203 => 'Claro',
|
||||
1787210 => 'SunCom Wireless Puerto Rico',
|
||||
1787212 => 'Claro',
|
||||
@@ -413,16 +486,27 @@ return array (
|
||||
180997 => 'Orange',
|
||||
180998 => 'Orange',
|
||||
180999 => 'Tricom',
|
||||
186826 => 'bmobile',
|
||||
186825 => 'Digicel',
|
||||
186826 => 'Digicel',
|
||||
1868266 => 'bmobile',
|
||||
1868267 => 'bmobile',
|
||||
1868268 => 'bmobile',
|
||||
1868269 => 'bmobile',
|
||||
186827 => 'bmobile',
|
||||
186828 => 'bmobile',
|
||||
186829 => 'bmobile',
|
||||
18683 => 'Digicel',
|
||||
18684 => 'bmobile',
|
||||
18686 => 'bmobile',
|
||||
186843 => 'Digicel',
|
||||
186846 => 'bmobile',
|
||||
186847 => 'bmobile',
|
||||
186848 => 'bmobile',
|
||||
186849 => 'bmobile',
|
||||
1868620 => 'bmobile',
|
||||
1868678 => 'bmobile',
|
||||
186868 => 'bmobile',
|
||||
18687 => 'bmobile',
|
||||
186948 => 'Cable & Wireless',
|
||||
186955 => 'CariGlobe St. Kitts',
|
||||
186956 => 'The Cable St. Kitts',
|
||||
1869660 => 'Cable & Wireless',
|
||||
1869661 => 'Cable & Wireless',
|
||||
1869662 => 'Cable & Wireless',
|
||||
@@ -438,6 +522,10 @@ return array (
|
||||
1869764 => 'Digicel',
|
||||
1869765 => 'Digicel',
|
||||
1869766 => 'Digicel',
|
||||
187620 => 'Cable & Wireless',
|
||||
1876210 => 'Cable & Wireless',
|
||||
187622 => 'Cable & Wireless',
|
||||
187623 => 'Cable & Wireless',
|
||||
187624 => 'Digicel',
|
||||
187625 => 'Digicel',
|
||||
187626 => 'Digicel',
|
||||
@@ -449,6 +537,18 @@ return array (
|
||||
187628 => 'Digicel',
|
||||
187629 => 'Digicel',
|
||||
187630 => 'Digicel',
|
||||
1876310 => 'Cable & Wireless',
|
||||
1876312 => 'Cable & Wireless',
|
||||
1876313 => 'Cable & Wireless',
|
||||
1876314 => 'Cable & Wireless',
|
||||
1876315 => 'Cable & Wireless',
|
||||
1876316 => 'Cable & Wireless',
|
||||
1876317 => 'Cable & Wireless',
|
||||
1876318 => 'Cable & Wireless',
|
||||
1876319 => 'Cable & Wireless',
|
||||
187632 => 'Cable & Wireless',
|
||||
187633 => 'Cable & Wireless',
|
||||
187634 => 'Cable & Wireless',
|
||||
187635 => 'Digicel',
|
||||
187636 => 'Digicel',
|
||||
187637 => 'Digicel',
|
||||
@@ -472,14 +572,16 @@ return array (
|
||||
187647 => 'Digicel',
|
||||
187648 => 'Digicel',
|
||||
187649 => 'Digicel',
|
||||
1876503 => 'Digicel',
|
||||
1876504 => 'Digicel',
|
||||
1876505 => 'Digicel',
|
||||
1876506 => 'Digicel',
|
||||
1876507 => 'Digicel',
|
||||
1876508 => 'Digicel',
|
||||
1876509 => 'Digicel',
|
||||
187650 => 'Digicel',
|
||||
1876501 => 'Cable & Wireless',
|
||||
1876502 => 'C&W',
|
||||
187651 => 'C&W',
|
||||
1876515 => 'Cable & Wireless',
|
||||
1876517 => 'Cable & Wireless',
|
||||
1876519 => 'Cable & Wireless',
|
||||
187652 => 'Digicel',
|
||||
187653 => 'Cable & Wireless',
|
||||
187654 => 'Cable & Wireless',
|
||||
1876550 => 'Digicel',
|
||||
1876551 => 'Digicel',
|
||||
1876552 => 'Digicel',
|
||||
@@ -489,24 +591,57 @@ return array (
|
||||
1876557 => 'Digicel',
|
||||
1876558 => 'Digicel',
|
||||
1876559 => 'Digicel',
|
||||
1876560 => 'Digicel',
|
||||
1876561 => 'Digicel',
|
||||
1876562 => 'Digicel',
|
||||
1876564 => 'Digicel',
|
||||
1876565 => 'Digicel',
|
||||
1876566 => 'Digicel',
|
||||
1876567 => 'Digicel',
|
||||
1876568 => 'Digicel',
|
||||
1876569 => 'Digicel',
|
||||
187656 => 'Digicel',
|
||||
1876563 => 'C&W',
|
||||
187657 => 'Digicel',
|
||||
187658 => 'Digicel',
|
||||
187659 => 'Digicel',
|
||||
1876648 => 'Digicel',
|
||||
1876649 => 'Digicel',
|
||||
1876666 => 'Digicel',
|
||||
1876667 => 'Digicel',
|
||||
1876700 => 'Cable & Wireless',
|
||||
1876707 => 'Cable & Wireless',
|
||||
187677 => 'Cable & Wireless',
|
||||
1876781 => 'Cable & Wireless',
|
||||
1876782 => 'Cable & Wireless',
|
||||
1876783 => 'Cable & Wireless',
|
||||
1876784 => 'Cable & Wireless',
|
||||
1876787 => 'Cable & Wireless',
|
||||
1876788 => 'Cable & Wireless',
|
||||
1876789 => 'Cable & Wireless',
|
||||
1876790 => 'Cable & Wireless',
|
||||
1876791 => 'Cable & Wireless',
|
||||
1876792 => 'Cable & Wireless',
|
||||
1876793 => 'Cable & Wireless',
|
||||
1876796 => 'Cable & Wireless',
|
||||
1876797 => 'Cable & Wireless',
|
||||
1876798 => 'Cable & Wireless',
|
||||
1876799 => 'Cable & Wireless',
|
||||
187680 => 'Cable & Wireless',
|
||||
1876810 => 'Cable & Wireless',
|
||||
1876812 => 'Cable & Wireless',
|
||||
1876813 => 'Cable & Wireless',
|
||||
1876814 => 'Cable & Wireless',
|
||||
1876815 => 'Cable & Wireless',
|
||||
1876816 => 'Cable & Wireless',
|
||||
1876817 => 'Cable & Wireless',
|
||||
1876818 => 'Cable & Wireless',
|
||||
1876819 => 'Cable & Wireless',
|
||||
187682 => 'Cable & Wireless',
|
||||
187683 => 'Cable & Wireless',
|
||||
187684 => 'Digicel',
|
||||
187685 => 'Digicel',
|
||||
187686 => 'Digicel',
|
||||
187687 => 'Digicel',
|
||||
187688 => 'Digicel',
|
||||
187689 => 'Digicel',
|
||||
1876909 => 'Cable & Wireless',
|
||||
1876919 => 'Cable & Wireless',
|
||||
1876990 => 'Cable & Wireless',
|
||||
1876995 => 'Cable & Wireless',
|
||||
1876997 => 'Cable & Wireless',
|
||||
1876999 => 'Cable & Wireless',
|
||||
1939201 => 'CENTENNIAL',
|
||||
1939212 => 'CENTENNIAL',
|
||||
1939214 => 'CENTENNIAL',
|
||||
|
@@ -11,8 +11,11 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
21112 => 'Sudatel Group',
|
||||
21191 => 'Zain',
|
||||
21192 => 'MTN',
|
||||
21195 => 'Vivacell',
|
||||
21195 => 'Network of the World',
|
||||
21197 => 'Gemtel',
|
||||
21198 => 'Digitel',
|
||||
21199 => 'MTN',
|
||||
);
|
||||
|
@@ -83,6 +83,9 @@ return array (
|
||||
212698 => 'Inwi',
|
||||
212699 => 'Inwi',
|
||||
21270 => 'Inwi',
|
||||
21271 => 'Inwi',
|
||||
21272 => 'Inwi',
|
||||
21276 => 'Maroc Telecom',
|
||||
21277 => 'Méditel',
|
||||
21278 => 'Méditel',
|
||||
);
|
||||
|
@@ -13,6 +13,5 @@
|
||||
return array (
|
||||
2135 => 'Ooredoo',
|
||||
2136 => 'Mobilis',
|
||||
21377 => 'Djezzy',
|
||||
21379 => 'Djezzy',
|
||||
2137 => 'Djezzy',
|
||||
);
|
||||
|
@@ -19,6 +19,7 @@ return array (
|
||||
21644 => 'Tunisie Telecom',
|
||||
21645 => 'Watany Ettisalat',
|
||||
21646 => 'Ooredoo',
|
||||
21647 => 'Tunisie Telecom',
|
||||
2165 => 'Orange',
|
||||
2169 => 'Tunisie Telecom',
|
||||
);
|
||||
|
20
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/218.php
vendored
Normal file
20
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/218.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
21891 => 'Al-Madar',
|
||||
21892 => 'Libyana',
|
||||
21893 => 'Al-Madar',
|
||||
21894 => 'Libyana',
|
||||
21895 => 'Libya Telecom & Technology',
|
||||
21896 => 'Libya Telecom & Technology',
|
||||
);
|
@@ -13,6 +13,12 @@
|
||||
return array (
|
||||
2202 => 'Africell',
|
||||
2203 => 'QCell',
|
||||
22050 => 'QCell',
|
||||
22051 => 'QCell',
|
||||
22052 => 'QCell',
|
||||
22053 => 'QCell',
|
||||
22058 => 'QCell',
|
||||
22059 => 'QCell',
|
||||
2206 => 'Comium',
|
||||
2207 => 'Africell',
|
||||
2209 => 'Gamcel',
|
||||
|
@@ -13,6 +13,8 @@
|
||||
return array (
|
||||
22170 => 'Expresso',
|
||||
22172 => 'HAYO',
|
||||
22175 => 'Promobile',
|
||||
221757 => 'Origines',
|
||||
22176 => 'Tigo',
|
||||
22177 => 'Orange',
|
||||
22178 => 'Orange',
|
||||
|
@@ -11,7 +11,31 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2222 => 'Chinguitel',
|
||||
2223 => 'Mattel',
|
||||
2224 => 'Mauritel',
|
||||
22220 => 'Chinguitel',
|
||||
22221 => 'Chinguitel',
|
||||
22222 => 'Chinguitel',
|
||||
22223 => 'Chinguitel',
|
||||
22224 => 'Chinguitel',
|
||||
22226 => 'Chinguitel',
|
||||
22227 => 'Chinguitel',
|
||||
22228 => 'Chinguitel',
|
||||
22229 => 'Chinguitel',
|
||||
22230 => 'Mattel',
|
||||
22231 => 'Mattel',
|
||||
22232 => 'Mattel',
|
||||
22233 => 'Mattel',
|
||||
22234 => 'Mattel',
|
||||
22236 => 'Mattel',
|
||||
22237 => 'Mattel',
|
||||
22238 => 'Mattel',
|
||||
22239 => 'Mattel',
|
||||
22240 => 'Mauritel',
|
||||
22241 => 'Mauritel',
|
||||
22242 => 'Mauritel',
|
||||
22243 => 'Mauritel',
|
||||
22244 => 'Mauritel',
|
||||
22246 => 'Mauritel',
|
||||
22247 => 'Mauritel',
|
||||
22248 => 'Mauritel',
|
||||
22249 => 'Mauritel',
|
||||
);
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
223200 => 'Orange',
|
||||
2232079 => 'Sotelma',
|
||||
223217 => 'Sotelma',
|
||||
2235 => 'Atel',
|
||||
@@ -18,6 +19,7 @@ return array (
|
||||
2237 => 'Orange',
|
||||
22382 => 'Orange',
|
||||
22383 => 'Orange',
|
||||
22384 => 'Orange',
|
||||
22389 => 'Sotelma',
|
||||
22390 => 'Orange',
|
||||
22391 => 'Orange',
|
||||
|
@@ -12,6 +12,7 @@
|
||||
|
||||
return array (
|
||||
22460 => 'Sotelgui',
|
||||
22461 => 'Orange',
|
||||
22462 => 'Orange',
|
||||
22463 => 'Intercel',
|
||||
22465 => 'Cellcom',
|
||||
|
@@ -12,55 +12,6 @@
|
||||
|
||||
return array (
|
||||
22501 => 'Moov',
|
||||
22502 => 'Moov',
|
||||
22503 => 'Moov',
|
||||
22504 => 'MTN',
|
||||
22505 => 'MTN',
|
||||
22506 => 'MTN',
|
||||
22507 => 'Orange',
|
||||
22508 => 'Orange',
|
||||
22509 => 'Orange',
|
||||
22540 => 'Moov',
|
||||
22541 => 'Moov',
|
||||
22542 => 'Moov',
|
||||
22543 => 'Moov',
|
||||
22544 => 'MTN',
|
||||
22545 => 'MTN',
|
||||
22546 => 'MTN',
|
||||
22547 => 'Orange',
|
||||
22548 => 'Orange',
|
||||
22549 => 'Orange',
|
||||
22550 => 'Moov',
|
||||
22551 => 'Moov',
|
||||
22552 => 'Moov',
|
||||
22553 => 'Moov',
|
||||
22554 => 'MTN',
|
||||
22555 => 'MTN',
|
||||
22556 => 'MTN',
|
||||
22557 => 'Orange',
|
||||
22558 => 'Orange',
|
||||
22559 => 'Orange',
|
||||
22560 => 'GreenN',
|
||||
22561 => 'GreenN',
|
||||
22564 => 'MTN',
|
||||
22565 => 'MTN',
|
||||
22566 => 'MTN',
|
||||
22567 => 'Orange',
|
||||
22568 => 'Orange',
|
||||
22569 => 'Aircom',
|
||||
22571 => 'Moov',
|
||||
22572 => 'Moov',
|
||||
22573 => 'Moov',
|
||||
22574 => 'MTN',
|
||||
22575 => 'MTN',
|
||||
22576 => 'MTN',
|
||||
22577 => 'Orange',
|
||||
22578 => 'Orange',
|
||||
22579 => 'Orange',
|
||||
22584 => 'MTN',
|
||||
22585 => 'MTN',
|
||||
22586 => 'MTN',
|
||||
22587 => 'Orange',
|
||||
22588 => 'Orange',
|
||||
22589 => 'Orange',
|
||||
);
|
||||
|
@@ -11,31 +11,38 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
22651 => 'Telmob',
|
||||
22652 => 'Telmob',
|
||||
22601 => 'Onatel',
|
||||
22602 => 'Onatel',
|
||||
22603 => 'Onatel',
|
||||
22605 => 'Orange',
|
||||
22606 => 'Orange',
|
||||
22607 => 'Orange',
|
||||
22651 => 'Onatel',
|
||||
22652 => 'Onatel',
|
||||
22653 => 'Onatel',
|
||||
22654 => 'Orange',
|
||||
22655 => 'Airtel',
|
||||
22656 => 'Airtel',
|
||||
22655 => 'Orange',
|
||||
22656 => 'Orange',
|
||||
22657 => 'Orange',
|
||||
22658 => 'Telecel Faso',
|
||||
22660 => 'Telmob',
|
||||
22661 => 'Telmob',
|
||||
22662 => 'Telmob',
|
||||
22663 => 'Telmob',
|
||||
22664 => 'Airtel',
|
||||
22665 => 'Airtel',
|
||||
22666 => 'Airtel',
|
||||
22667 => 'Airtel',
|
||||
22660 => 'Onatel',
|
||||
22661 => 'Onatel',
|
||||
22662 => 'Onatel',
|
||||
22663 => 'Onatel',
|
||||
22664 => 'Orange',
|
||||
22665 => 'Orange',
|
||||
22666 => 'Orange',
|
||||
22667 => 'Orange',
|
||||
22668 => 'Telecel Faso',
|
||||
22669 => 'Telecel Faso',
|
||||
22670 => 'Telmob',
|
||||
22671 => 'Telmob',
|
||||
22672 => 'Telmob',
|
||||
22673 => 'Telmob',
|
||||
22674 => 'Airtel',
|
||||
22675 => 'Airtel',
|
||||
22676 => 'Airtel',
|
||||
22677 => 'Airtel',
|
||||
22670 => 'Onatel',
|
||||
22671 => 'Onatel',
|
||||
22672 => 'Onatel',
|
||||
22673 => 'Onatel',
|
||||
22674 => 'Orange',
|
||||
22675 => 'Orange',
|
||||
22676 => 'Orange',
|
||||
22677 => 'Orange',
|
||||
22678 => 'Telecel Faso',
|
||||
22679 => 'Telecel Faso',
|
||||
);
|
||||
|
@@ -11,12 +11,23 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
22723 => 'Orange',
|
||||
22770 => 'Orange',
|
||||
22774 => 'Moov',
|
||||
22780 => 'Orange',
|
||||
22781 => 'Orange',
|
||||
22782 => 'Orange',
|
||||
22783 => 'Niger Telecoms',
|
||||
22784 => 'Moov',
|
||||
22785 => 'Moov',
|
||||
22786 => 'Airtel',
|
||||
22787 => 'Airtel',
|
||||
22788 => 'Airtel',
|
||||
22789 => 'Airtel',
|
||||
22790 => 'Orange',
|
||||
22791 => 'Orange',
|
||||
22792 => 'Orange',
|
||||
22793 => 'Niger Telecoms',
|
||||
22794 => 'Moov',
|
||||
22795 => 'Moov',
|
||||
22796 => 'Airtel',
|
||||
|
@@ -11,6 +11,10 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2294 => 'SBIN',
|
||||
2295 => 'MTN',
|
||||
22955 => 'Moov',
|
||||
22956 => 'Moov',
|
||||
22960 => 'Moov',
|
||||
22961 => 'MTN',
|
||||
22962 => 'MTN',
|
||||
@@ -21,10 +25,12 @@ return array (
|
||||
22967 => 'MTN',
|
||||
22968 => 'Moov',
|
||||
22969 => 'MTN',
|
||||
22990 => 'Libercom',
|
||||
22990 => 'MTN',
|
||||
22991 => 'MTN',
|
||||
22993 => 'BLK',
|
||||
22994 => 'Moov',
|
||||
22995 => 'Moov',
|
||||
22996 => 'MTN',
|
||||
22997 => 'MTN',
|
||||
22998 => 'Moov',
|
||||
22999 => 'Moov',
|
||||
|
@@ -12,14 +12,14 @@
|
||||
|
||||
return array (
|
||||
230525 => 'Cellplus',
|
||||
230526 => 'Cellplus',
|
||||
230527 => 'MTML',
|
||||
230528 => 'MTML',
|
||||
230529 => 'MTML',
|
||||
230542 => 'Emtel',
|
||||
230544 => 'Emtel',
|
||||
230547 => 'Emtel',
|
||||
23054 => 'Emtel',
|
||||
2305471 => 'Cellplus',
|
||||
230548 => 'Emtel',
|
||||
230549 => 'Emtel',
|
||||
23055 => 'Emtel',
|
||||
230550 => 'Cellplus',
|
||||
23057 => 'Cellplus',
|
||||
230571 => 'Emtel',
|
||||
230572 => 'Emtel',
|
||||
@@ -37,6 +37,7 @@ return array (
|
||||
2305876 => 'Cellplus',
|
||||
2305877 => 'Cellplus',
|
||||
2305878 => 'Cellplus',
|
||||
230588 => 'MTML',
|
||||
230589 => 'MTML',
|
||||
230590 => 'Cellplus',
|
||||
230591 => 'Cellplus',
|
||||
@@ -47,4 +48,5 @@ return array (
|
||||
230596 => 'MTML',
|
||||
230597 => 'Emtel',
|
||||
230598 => 'Emtel',
|
||||
2307 => 'Emtel',
|
||||
);
|
||||
|
@@ -11,9 +11,9 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
23120 => 'LIBTELCO',
|
||||
231330 => 'West Africa Telecom',
|
||||
231555 => 'Novafone',
|
||||
2317 => 'Cellcom',
|
||||
231555 => 'Lonestar Cell',
|
||||
2316 => 'Lonestar Cell',
|
||||
2317 => 'Orange',
|
||||
2318 => 'Lonestar Cell',
|
||||
);
|
||||
|
@@ -11,23 +11,16 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
23221 => 'Sierratel',
|
||||
23225 => 'Sierratel',
|
||||
23230 => 'Africell',
|
||||
23231 => 'QCELL',
|
||||
23233 => 'Comium',
|
||||
23232 => 'QCELL',
|
||||
23233 => 'Africell',
|
||||
23234 => 'QCELL',
|
||||
23235 => 'IPTEL',
|
||||
23240 => 'Datatel/Cellcom',
|
||||
23244 => 'Intergroup',
|
||||
23250 => 'Datatel/Cellcom',
|
||||
23255 => 'AFCOM',
|
||||
2326 => 'Onlime',
|
||||
23275 => 'Orange',
|
||||
23276 => 'Airtel',
|
||||
2327 => 'Orange',
|
||||
23277 => 'Africell',
|
||||
23278 => 'Airtel',
|
||||
23279 => 'Airtel',
|
||||
2328 => 'Africell',
|
||||
2329 => 'Africell',
|
||||
);
|
||||
|
@@ -12,19 +12,17 @@
|
||||
|
||||
return array (
|
||||
23320 => 'Vodafone',
|
||||
23323 => 'Globacom (Zain)',
|
||||
23323 => 'airteltiGO',
|
||||
23324 => 'MTN',
|
||||
23326 => 'Airtel',
|
||||
23327 => 'tiGO',
|
||||
23325 => 'MTN',
|
||||
23326 => 'airteltiGO',
|
||||
23327 => 'airteltiGO',
|
||||
23328 => 'Expresso',
|
||||
23329 => 'National Security',
|
||||
23350 => 'Vodafone',
|
||||
23354 => 'MTN',
|
||||
233553 => 'MTN',
|
||||
233554 => 'MTN',
|
||||
233555 => 'MTN',
|
||||
233556 => 'MTN',
|
||||
233557 => 'MTN',
|
||||
233558 => 'MTN',
|
||||
23356 => 'Airtel',
|
||||
23357 => 'tiGO',
|
||||
23355 => 'MTN',
|
||||
23356 => 'airteltiGO',
|
||||
23357 => 'airteltiGO',
|
||||
23359 => 'MTN',
|
||||
);
|
||||
|
@@ -11,168 +11,23 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
234173 => 'Starcomms',
|
||||
234174 => 'Starcomms',
|
||||
2341804 => 'Starcomms',
|
||||
234181 => 'Starcomms',
|
||||
234182 => 'Starcomms',
|
||||
234184 => 'Starcomms',
|
||||
234185 => 'Starcomms',
|
||||
234187 => 'Starcomms',
|
||||
2341880 => 'Starcomms',
|
||||
2341881 => 'Starcomms',
|
||||
2341882 => 'Starcomms',
|
||||
2341883 => 'Starcomms',
|
||||
234189 => 'Starcomms',
|
||||
234195 => 'Starcomms',
|
||||
2342870 => 'Starcomms',
|
||||
2342871 => 'Starcomms',
|
||||
2342872 => 'Starcomms',
|
||||
2342873 => 'Starcomms',
|
||||
2342874 => 'Starcomms',
|
||||
2342875 => 'Starcomms',
|
||||
2342876 => 'Starcomms',
|
||||
2342877 => 'Starcomms',
|
||||
2343181 => 'Starcomms',
|
||||
2343182 => 'Starcomms',
|
||||
2343183 => 'Starcomms',
|
||||
2343184 => 'Starcomms',
|
||||
2343185 => 'Starcomms',
|
||||
2343186 => 'Starcomms',
|
||||
2343187 => 'Starcomms',
|
||||
2343188 => 'Starcomms',
|
||||
2343880 => 'Starcomms',
|
||||
2343881 => 'Starcomms',
|
||||
2343882 => 'Starcomms',
|
||||
2343883 => 'Starcomms',
|
||||
2343884 => 'Starcomms',
|
||||
2343885 => 'Starcomms',
|
||||
2343886 => 'Starcomms',
|
||||
2343887 => 'Starcomms',
|
||||
2343961 => 'Starcomms',
|
||||
2343962 => 'Starcomms',
|
||||
2343963 => 'Starcomms',
|
||||
2343964 => 'Starcomms',
|
||||
2343965 => 'Starcomms',
|
||||
2343985 => 'Starcomms',
|
||||
2343986 => 'Starcomms',
|
||||
2343987 => 'Starcomms',
|
||||
2343988 => 'Starcomms',
|
||||
2343989 => 'Starcomms',
|
||||
2344280 => 'Starcomms',
|
||||
2344281 => 'Starcomms',
|
||||
2344282 => 'Starcomms',
|
||||
2344671 => 'Starcomms',
|
||||
2344672 => 'Starcomms',
|
||||
2344673 => 'Starcomms',
|
||||
2344674 => 'Starcomms',
|
||||
2344675 => 'Starcomms',
|
||||
2344676 => 'Starcomms',
|
||||
2344677 => 'Starcomms',
|
||||
2344678 => 'Starcomms',
|
||||
2344679 => 'Starcomms',
|
||||
2344680 => 'Starcomms',
|
||||
2344682 => 'Starcomms',
|
||||
2344683 => 'Starcomms',
|
||||
2344684 => 'Starcomms',
|
||||
2344687 => 'Starcomms',
|
||||
2344880 => 'Starcomms',
|
||||
2344881 => 'Starcomms',
|
||||
2344882 => 'Starcomms',
|
||||
2345277 => 'Starcomms',
|
||||
2345278 => 'Starcomms',
|
||||
2345279 => 'Starcomms',
|
||||
234528 => 'Starcomms',
|
||||
2345381 => 'Starcomms',
|
||||
2345382 => 'Starcomms',
|
||||
2345383 => 'Starcomms',
|
||||
2345384 => 'Starcomms',
|
||||
2345385 => 'Starcomms',
|
||||
2345386 => 'Starcomms',
|
||||
2345387 => 'Starcomms',
|
||||
2345389 => 'Starcomms',
|
||||
2345480 => 'Starcomms',
|
||||
2345481 => 'Starcomms',
|
||||
2345482 => 'Starcomms',
|
||||
2345483 => 'Starcomms',
|
||||
2345484 => 'Starcomms',
|
||||
2345485 => 'Starcomms',
|
||||
2345486 => 'Starcomms',
|
||||
2345487 => 'Starcomms',
|
||||
2345684 => 'Starcomms',
|
||||
2345685 => 'Starcomms',
|
||||
2345686 => 'Starcomms',
|
||||
2345687 => 'Starcomms',
|
||||
2346277 => 'Starcomms',
|
||||
2346278 => 'Starcomms',
|
||||
2346279 => 'Starcomms',
|
||||
234628 => 'Starcomms',
|
||||
2346437 => 'Starcomms',
|
||||
2346438 => 'Starcomms',
|
||||
2346439 => 'Starcomms',
|
||||
2346461 => 'Starcomms',
|
||||
2346462 => 'Starcomms',
|
||||
2346469 => 'Starcomms',
|
||||
2346470 => 'Starcomms',
|
||||
2346474 => 'Starcomms',
|
||||
2346475 => 'Starcomms',
|
||||
2346476 => 'Starcomms',
|
||||
2346479 => 'Starcomms',
|
||||
2346481 => 'Starcomms',
|
||||
2346482 => 'Starcomms',
|
||||
2346489 => 'Starcomms',
|
||||
2346491 => 'Starcomms',
|
||||
2346492 => 'Starcomms',
|
||||
2346493 => 'Starcomms',
|
||||
2346494 => 'Starcomms',
|
||||
2346495 => 'Starcomms',
|
||||
2346496 => 'Starcomms',
|
||||
2346497 => 'Starcomms',
|
||||
2346498 => 'Starcomms',
|
||||
2346580 => 'Starcomms',
|
||||
2346581 => 'Starcomms',
|
||||
2346582 => 'Starcomms',
|
||||
2346987 => 'Starcomms',
|
||||
2346988 => 'Starcomms',
|
||||
2346989 => 'Starcomms',
|
||||
234701 => 'Airtel',
|
||||
2347020 => 'Smile',
|
||||
2347021 => 'Ntel',
|
||||
2347022 => 'Ntel',
|
||||
2347023 => 'Zoom',
|
||||
2347024 => 'Prestel',
|
||||
2347025 => 'Visafone',
|
||||
2347026 => 'Visafone',
|
||||
2347025 => 'MTN',
|
||||
2347026 => 'MTN',
|
||||
2347027 => 'Multilinks',
|
||||
2347028 => 'Starcomms',
|
||||
2347029 => 'Starcomms',
|
||||
234703 => 'MTN',
|
||||
234704 => 'Visafone',
|
||||
234704 => 'MTN',
|
||||
234705 => 'Glo',
|
||||
234706 => 'MTN',
|
||||
234707 => 'Zoom',
|
||||
234708 => 'Airtel',
|
||||
234709 => 'Multilinks',
|
||||
2347380 => 'Starcomms',
|
||||
2347381 => 'Starcomms',
|
||||
2347382 => 'Starcomms',
|
||||
2347383 => 'Starcomms',
|
||||
2347384 => 'Starcomms',
|
||||
2347385 => 'Starcomms',
|
||||
2347386 => 'Starcomms',
|
||||
2347387 => 'Starcomms',
|
||||
2347691 => 'Starcomms',
|
||||
2347692 => 'Starcomms',
|
||||
2347693 => 'Starcomms',
|
||||
2347694 => 'Starcomms',
|
||||
2347695 => 'Starcomms',
|
||||
2347696 => 'Starcomms',
|
||||
2347697 => 'Starcomms',
|
||||
2347698 => 'Starcomms',
|
||||
2347782 => 'Starcomms',
|
||||
2347783 => 'Starcomms',
|
||||
2347784 => 'Starcomms',
|
||||
234801 => 'Megatech',
|
||||
234801 => 'MAFAB',
|
||||
234802 => 'Airtel',
|
||||
234803 => 'MTN',
|
||||
234804 => 'Ntel',
|
||||
@@ -191,65 +46,18 @@ return array (
|
||||
234817 => '9mobile',
|
||||
234818 => '9mobile',
|
||||
234819 => 'Starcomms',
|
||||
2348283 => 'Starcomms',
|
||||
2348284 => 'Starcomms',
|
||||
2348285 => 'Starcomms',
|
||||
2348286 => 'Starcomms',
|
||||
2348287 => 'Starcomms',
|
||||
2348288 => 'Starcomms',
|
||||
2348380 => 'Starcomms',
|
||||
2348381 => 'Starcomms',
|
||||
2348382 => 'Starcomms',
|
||||
2348421 => 'Starcomms',
|
||||
2348422 => 'Starcomms',
|
||||
2348431 => 'Starcomms',
|
||||
2348434 => 'Starcomms',
|
||||
2348437 => 'Starcomms',
|
||||
2348438 => 'Starcomms',
|
||||
2348439 => 'Starcomms',
|
||||
2348453 => 'Starcomms',
|
||||
2348454 => 'Starcomms',
|
||||
2348456 => 'Starcomms',
|
||||
2348474 => 'Starcomms',
|
||||
2348475 => 'Starcomms',
|
||||
2348476 => 'Starcomms',
|
||||
2348477 => 'Starcomms',
|
||||
2348478 => 'Starcomms',
|
||||
2348479 => 'Starcomms',
|
||||
2348480 => 'Starcomms',
|
||||
2348481 => 'Starcomms',
|
||||
2348484 => 'Starcomms',
|
||||
2348485 => 'Starcomms',
|
||||
2348486 => 'Starcomms',
|
||||
2348488 => 'Starcomms',
|
||||
2348489 => 'Starcomms',
|
||||
2348490 => 'Starcomms',
|
||||
2348581 => 'Starcomms',
|
||||
2348582 => 'Starcomms',
|
||||
2348583 => 'Starcomms',
|
||||
2348584 => 'Starcomms',
|
||||
2348585 => 'Starcomms',
|
||||
2348586 => 'Starcomms',
|
||||
2348587 => 'Starcomms',
|
||||
2348588 => 'Starcomms',
|
||||
2348782 => 'Starcomms',
|
||||
2348783 => 'Starcomms',
|
||||
2348784 => 'Starcomms',
|
||||
2348785 => 'Starcomms',
|
||||
2348786 => 'Starcomms',
|
||||
2348787 => 'Starcomms',
|
||||
2348788 => 'Starcomms',
|
||||
2348789 => 'Starcomms',
|
||||
2348885 => 'Starcomms',
|
||||
2348886 => 'Starcomms',
|
||||
2348887 => 'Starcomms',
|
||||
234901 => 'Airtel',
|
||||
234902 => 'Airtel',
|
||||
234903 => 'MTN',
|
||||
234904 => 'Airtel',
|
||||
234905 => 'Glo',
|
||||
234906 => 'MTN',
|
||||
234907 => 'Airtel',
|
||||
234908 => '9mobile',
|
||||
234909 => '9mobile',
|
||||
234980 => 'Starcomms',
|
||||
234987 => 'Starcomms',
|
||||
234911 => 'Airtel',
|
||||
234912 => 'Airtel',
|
||||
234913 => 'MTN',
|
||||
234915 => 'Glo',
|
||||
234916 => 'MTN',
|
||||
);
|
||||
|
@@ -13,5 +13,5 @@
|
||||
return array (
|
||||
2356 => 'Airtel',
|
||||
2357 => 'Sotel',
|
||||
2359 => 'Millicom',
|
||||
2359 => 'Tigo',
|
||||
);
|
||||
|
@@ -11,8 +11,9 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
23670 => 'TC',
|
||||
23670 => 'A-Cell',
|
||||
23672 => 'Orange',
|
||||
23675 => 'CTP',
|
||||
23674 => 'Orange',
|
||||
23675 => 'Telecel',
|
||||
23677 => 'Nationlink',
|
||||
);
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
23762 => 'Camtel',
|
||||
237650 => 'MTN Cameroon',
|
||||
237651 => 'MTN Cameroon',
|
||||
237652 => 'MTN Cameroon',
|
||||
@@ -23,6 +24,10 @@ return array (
|
||||
237659 => 'Orange',
|
||||
23766 => 'NEXTTEL',
|
||||
23767 => 'MTN Cameroon',
|
||||
23768 => 'MTN Cameroon',
|
||||
23768 => 'NEXTTEL',
|
||||
237680 => 'MTN Cameroon',
|
||||
237681 => 'MTN Cameroon',
|
||||
237682 => 'MTN Cameroon',
|
||||
237683 => 'MTN Cameroon',
|
||||
23769 => 'Orange',
|
||||
);
|
||||
|
@@ -11,10 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
23833 => 'T+',
|
||||
23836 => 'CVMOVEL',
|
||||
23843 => 'T+',
|
||||
23846 => 'CVMOVEL',
|
||||
23851 => 'T+',
|
||||
23852 => 'T+',
|
||||
23853 => 'T+',
|
||||
|
@@ -12,6 +12,5 @@
|
||||
|
||||
return array (
|
||||
2402 => 'GETESA',
|
||||
240550 => 'Muni',
|
||||
240551 => 'HiTS',
|
||||
2405 => 'Muni',
|
||||
);
|
||||
|
@@ -27,5 +27,6 @@ return array (
|
||||
2414 => 'Airtel',
|
||||
2415 => 'Moov',
|
||||
2416 => 'Libertis',
|
||||
24165 => 'Moov',
|
||||
2417 => 'Airtel',
|
||||
);
|
||||
|
@@ -12,8 +12,8 @@
|
||||
|
||||
return array (
|
||||
24201 => 'Equateur Telecom',
|
||||
24202 => 'Congo telecom',
|
||||
24204 => 'Warid',
|
||||
24205 => 'Celtel',
|
||||
24205 => 'Airtel',
|
||||
24206 => 'MTN',
|
||||
2428001 => 'Hightech Pro',
|
||||
);
|
||||
|
@@ -11,15 +11,17 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
24380 => 'Supercell',
|
||||
24380 => 'Orange',
|
||||
24381 => 'Vodacom',
|
||||
24382 => 'Vodacom',
|
||||
24384 => 'CCT',
|
||||
24383 => 'Vodacom',
|
||||
24384 => 'Orange',
|
||||
24385 => 'Orange',
|
||||
24388 => 'Yozma Timeturns sprl -YTT',
|
||||
24389 => 'Tigo',
|
||||
24389 => 'Orange',
|
||||
24390 => 'Africell',
|
||||
24391 => 'Africell',
|
||||
24397 => 'Zain',
|
||||
24398 => 'Zain',
|
||||
24399 => 'Zain',
|
||||
24397 => 'Airtel',
|
||||
24398 => 'Airtel',
|
||||
24399 => 'Airtel',
|
||||
);
|
||||
|
@@ -15,5 +15,6 @@ return array (
|
||||
24492 => 'UNITEL',
|
||||
24493 => 'UNITEL',
|
||||
24494 => 'UNITEL',
|
||||
24495 => 'Africell Angola',
|
||||
24499 => 'Movicel',
|
||||
);
|
||||
|
@@ -11,5 +11,5 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
4631 => 'Göteborg',
|
||||
24638 => 'Sure Ltd',
|
||||
);
|
21
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/247.php
vendored
Normal file
21
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/247.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
24741 => 'Sure South Atlantic',
|
||||
24742 => 'Sure South Atlantic',
|
||||
24743 => 'Sure South Atlantic',
|
||||
24745 => 'Sure South Atlantic',
|
||||
24746 => 'Sure South Atlantic',
|
||||
24747 => 'Sure South Atlantic',
|
||||
24748 => 'Sure South Atlantic',
|
||||
);
|
@@ -11,6 +11,8 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
24821 => 'Intelvision',
|
||||
24822 => 'Intelvision',
|
||||
24825 => 'CWS',
|
||||
24826 => 'CWS',
|
||||
24827 => 'Airtel',
|
||||
|
@@ -14,4 +14,5 @@ return array (
|
||||
25072 => 'TIGO',
|
||||
25073 => 'Airtel',
|
||||
25078 => 'MTN',
|
||||
25079 => 'MTN',
|
||||
);
|
||||
|
@@ -11,5 +11,6 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2517 => 'Safaricom',
|
||||
2519 => 'Ethio Telecom',
|
||||
);
|
||||
|
@@ -17,14 +17,21 @@ return array (
|
||||
25239 => 'AirSom',
|
||||
25248 => 'AirSom',
|
||||
25249 => 'AirSom',
|
||||
252604 => 'Golis Telecom',
|
||||
252605 => 'Golis Telecom',
|
||||
252606 => 'Golis Telecom',
|
||||
252607 => 'Golis Telecom',
|
||||
25261 => 'Hormuud',
|
||||
25262 => 'Somtel',
|
||||
25263 => 'Telesom',
|
||||
25264 => 'Somali Networks',
|
||||
25265 => 'Somtel',
|
||||
25266 => 'Somtel',
|
||||
25267 => 'Nationlink',
|
||||
25268 => 'Nationlink',
|
||||
25268 => 'SomNet',
|
||||
25269 => 'Nationlink',
|
||||
25270 => 'Golis Telecom',
|
||||
25271 => 'Amtel',
|
||||
25279 => 'Somtel',
|
||||
25280 => 'Somali Networks',
|
||||
25288 => 'Somali Networks',
|
||||
|
@@ -11,6 +11,12 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
25410 => 'Airtel',
|
||||
25411 => 'Safaricom',
|
||||
254120 => 'Telkom',
|
||||
254121 => 'Infura',
|
||||
254124 => 'Finserve',
|
||||
25413 => 'NRG Media Limited',
|
||||
25470 => 'Safaricom',
|
||||
25471 => 'Safaricom',
|
||||
25472 => 'Safaricom',
|
||||
@@ -18,7 +24,6 @@ return array (
|
||||
25474 => 'Safaricom',
|
||||
254744 => 'Homeland Media',
|
||||
254747 => 'JTL',
|
||||
254749 => 'WiAfrica',
|
||||
25475 => 'Airtel',
|
||||
254757 => 'Safaricom',
|
||||
254758 => 'Safaricom',
|
||||
@@ -32,7 +37,7 @@ return array (
|
||||
254766 => 'Finserve',
|
||||
254767 => 'Sema Mobile',
|
||||
254768 => 'Safaricom',
|
||||
254769 => 'Airtel',
|
||||
254769 => 'Safaricom',
|
||||
25477 => 'Telkom',
|
||||
25478 => 'Airtel',
|
||||
25479 => 'Safaricom',
|
||||
|
@@ -11,9 +11,8 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
25561 => 'Viettel',
|
||||
25562 => 'Viettel',
|
||||
25563 => 'MTC',
|
||||
25564 => 'Cootel',
|
||||
25565 => 'tiGO',
|
||||
25566 => 'SMILE',
|
||||
25567 => 'tiGO',
|
||||
|
@@ -14,11 +14,11 @@ return array (
|
||||
25670 => 'Airtel',
|
||||
25671 => 'UTL',
|
||||
256720 => 'Smile',
|
||||
256723 => 'Afrimax',
|
||||
256726 => 'Tangerine',
|
||||
25673 => 'K2',
|
||||
25673 => 'Hamilton Telecom',
|
||||
25674 => 'Sure Telecom',
|
||||
25675 => 'Airtel',
|
||||
25676 => 'MTN',
|
||||
25677 => 'MTN',
|
||||
25678 => 'MTN',
|
||||
25679 => 'Africell',
|
||||
|
@@ -12,7 +12,6 @@
|
||||
|
||||
return array (
|
||||
25729 => 'Leo',
|
||||
2573 => 'Viettel',
|
||||
2576 => 'Viettel',
|
||||
25771 => 'Leo',
|
||||
25772 => 'Leo',
|
||||
|
@@ -17,4 +17,5 @@ return array (
|
||||
25885 => 'Vodacom',
|
||||
25886 => 'Movitel',
|
||||
25887 => 'Movitel',
|
||||
25889 => 'GMPCS',
|
||||
);
|
||||
|
@@ -11,8 +11,11 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2607 => 'MTN',
|
||||
26075 => 'ZAMTEL',
|
||||
26076 => 'MTN',
|
||||
26077 => 'Airtel',
|
||||
26095 => 'ZAMTEL',
|
||||
26096 => 'MTN',
|
||||
26097 => 'Airtel',
|
||||
26098 => 'Beeline Telecoms',
|
||||
);
|
||||
|
@@ -14,5 +14,6 @@ return array (
|
||||
26132 => 'Orange',
|
||||
26133 => 'Airtel',
|
||||
26134 => 'Telma',
|
||||
26138 => 'Telma',
|
||||
26139 => 'Blueline',
|
||||
);
|
||||
|
@@ -28,7 +28,12 @@ return array (
|
||||
26263930 => 'BJT',
|
||||
26263939 => 'Only',
|
||||
2626394 => 'SFR',
|
||||
2626395 => 'BJT',
|
||||
26263950 => 'BJT',
|
||||
26263955 => 'Orange',
|
||||
26263956 => 'Orange',
|
||||
26263957 => 'Orange',
|
||||
26263958 => 'Orange',
|
||||
26263959 => 'Orange',
|
||||
26263960 => 'Orange',
|
||||
26263961 => 'Orange',
|
||||
26263962 => 'Orange',
|
||||
@@ -46,6 +51,9 @@ return array (
|
||||
26263974 => 'Only',
|
||||
26263975 => 'Only',
|
||||
26263976 => 'Orange',
|
||||
26263977 => 'Orange',
|
||||
26263978 => 'Orange',
|
||||
26263979 => 'Orange',
|
||||
26263990 => 'BJT',
|
||||
26263994 => 'Only',
|
||||
26263995 => 'Only',
|
||||
@@ -83,8 +91,17 @@ return array (
|
||||
26269339 => 'Orange',
|
||||
2626934 => 'Only',
|
||||
26269350 => 'Only',
|
||||
26269351 => 'Only',
|
||||
26269352 => 'Only',
|
||||
26269353 => 'Only',
|
||||
26269354 => 'Only',
|
||||
26269355 => 'Orange',
|
||||
26269360 => 'Only',
|
||||
26269361 => 'ZEOP Mobile',
|
||||
26269362 => 'ZEOP Mobile',
|
||||
26269363 => 'ZEOP Mobile',
|
||||
26269364 => 'ZEOP Mobile',
|
||||
26269365 => 'ZEOP Mobile',
|
||||
26269366 => 'Orange',
|
||||
26269370 => 'Only',
|
||||
26269371 => 'Only',
|
||||
@@ -102,4 +119,5 @@ return array (
|
||||
26269394 => 'SFR',
|
||||
26269397 => 'SFR',
|
||||
26269399 => 'Orange',
|
||||
2629769 => 'Orange',
|
||||
);
|
||||
|
@@ -11,6 +11,9 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
26511 => 'Malawi Telecom-munications Ltd (MTL)',
|
||||
2653 => 'TNM',
|
||||
2657 => 'Globally Advanced Integrated Networks Ltd',
|
||||
2658 => 'TNM',
|
||||
2659 => 'Airtel',
|
||||
);
|
||||
|
@@ -11,10 +11,6 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
822 => 'Seul',
|
||||
8231 => 'Gyeonggi-do',
|
||||
8233 => 'Gangwon-do',
|
||||
8254 => 'Gyeongsangbuk-do',
|
||||
8255 => 'Gyeongsangnam-do',
|
||||
8264 => 'Insula Jeju',
|
||||
2665 => 'Vodacom Lesotho (Pty) Ltd',
|
||||
2666 => 'Econet Ezi-Cel Lesotho',
|
||||
);
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
26732 => 'Mascom',
|
||||
26771 => 'Mascom',
|
||||
26772 => 'Orange',
|
||||
26773 => 'BTC Mobile',
|
||||
@@ -38,13 +39,16 @@ return array (
|
||||
267766 => 'Mascom',
|
||||
267767 => 'Mascom',
|
||||
267768 => 'BTC Mobile',
|
||||
267769 => 'BTC Mobile/Orange',
|
||||
267769 => 'Orange',
|
||||
267770 => 'Mascom',
|
||||
267771 => 'Mascom',
|
||||
267772 => 'BTC Mobile',
|
||||
267773 => 'Orange',
|
||||
267774 => 'Orange',
|
||||
267775 => 'Orange',
|
||||
267776 => 'Mascom',
|
||||
267777 => 'Mascom',
|
||||
267778 => 'Mascom',
|
||||
267779 => 'Orange',
|
||||
26778 => 'Orange',
|
||||
);
|
||||
|
@@ -14,5 +14,5 @@ return array (
|
||||
26876 => 'Swazi MTN',
|
||||
26877 => 'SPTC',
|
||||
26878 => 'Swazi MTN',
|
||||
26879 => 'Swazi MTN',
|
||||
26879 => 'Swazi Mobile Ltd',
|
||||
);
|
||||
|
@@ -11,6 +11,53 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2710492 => 'Vodacom',
|
||||
2710493 => 'Vodacom',
|
||||
2710494 => 'Vodacom',
|
||||
2712492 => 'Vodacom',
|
||||
27134920 => 'Vodacom',
|
||||
27134921 => 'Vodacom',
|
||||
27134922 => 'Vodacom',
|
||||
27134925 => 'Vodacom',
|
||||
27144950 => 'Vodacom',
|
||||
27144952 => 'Vodacom',
|
||||
27144953 => 'Vodacom',
|
||||
27144955 => 'Vodacom',
|
||||
27154920 => 'Vodacom',
|
||||
27154950 => 'Vodacom',
|
||||
27154951 => 'Vodacom',
|
||||
27164920 => 'Vodacom',
|
||||
27174920 => 'Vodacom',
|
||||
27184920 => 'Vodacom',
|
||||
2719 => 'Telkom Mobile',
|
||||
2721492 => 'Vodacom',
|
||||
27224950 => 'Vodacom',
|
||||
27274950 => 'Vodacom',
|
||||
27284920 => 'Vodacom',
|
||||
2731492 => 'Vodacom',
|
||||
27324920 => 'Vodacom',
|
||||
27334920 => 'Vodacom',
|
||||
27344920 => 'Vodacom',
|
||||
27354920 => 'Vodacom',
|
||||
27364920 => 'Vodacom',
|
||||
27394920 => 'Vodacom',
|
||||
27404920 => 'Vodacom',
|
||||
2741492 => 'Vodacom',
|
||||
27424920 => 'Vodacom',
|
||||
27434920 => 'Vodacom',
|
||||
27434921 => 'Vodacom',
|
||||
27444920 => 'Vodacom',
|
||||
27444921 => 'Vodacom',
|
||||
27454920 => 'Vodacom',
|
||||
27464920 => 'Vodacom',
|
||||
27474950 => 'Vodacom',
|
||||
27484920 => 'Vodacom',
|
||||
27494920 => 'Vodacom',
|
||||
2751492 => 'Vodacom',
|
||||
27544950 => 'Vodacom',
|
||||
27564920 => 'Vodacom',
|
||||
27574920 => 'Vodacom',
|
||||
27584920 => 'Vodacom',
|
||||
27603 => 'MTN',
|
||||
27604 => 'MTN',
|
||||
27605 => 'MTN',
|
||||
@@ -34,12 +81,35 @@ return array (
|
||||
27647 => 'Vodacom',
|
||||
27648 => 'Vodacom',
|
||||
27649 => 'Vodacom',
|
||||
27650 => 'Cell C',
|
||||
27651 => 'Cell C',
|
||||
27652 => 'Cell C',
|
||||
27653 => 'Cell C',
|
||||
27654 => 'Cell C',
|
||||
27655 => 'MTN',
|
||||
27656 => 'MTN',
|
||||
27657 => 'MTN',
|
||||
27658 => 'Telkom Mobile',
|
||||
27659 => 'Telkom Mobile',
|
||||
27660 => 'Vodacom',
|
||||
27661 => 'Vodacom',
|
||||
27662 => 'Vodacom',
|
||||
27663 => 'Vodacom',
|
||||
27664 => 'Vodacom',
|
||||
27665 => 'Vodacom',
|
||||
27670 => 'Telkom Mobile',
|
||||
27671 => 'Telkom Mobile',
|
||||
27672 => 'Telkom Mobile',
|
||||
27673 => 'Vodacom',
|
||||
27674 => 'Vodacom',
|
||||
27675 => 'Vodacom',
|
||||
27676 => 'Telkom Mobile',
|
||||
27677 => 'Telkom Mobile',
|
||||
2768 => 'Telkom Mobile',
|
||||
27686 => 'MTN',
|
||||
27687 => 'MTN',
|
||||
27688 => 'MTN',
|
||||
27689 => 'MTN',
|
||||
2771 => 'Vodacom',
|
||||
27710 => 'MTN',
|
||||
27717 => 'MTN',
|
||||
@@ -48,7 +118,6 @@ return array (
|
||||
2772 => 'Vodacom',
|
||||
2773 => 'MTN',
|
||||
2774 => 'Cell C',
|
||||
27741 => 'Virgin Mobile',
|
||||
2776 => 'Vodacom',
|
||||
2778 => 'MTN',
|
||||
2779 => 'Vodacom',
|
||||
@@ -61,7 +130,19 @@ return array (
|
||||
27816 => 'WBS Mobile',
|
||||
27817 => 'Telkom Mobile',
|
||||
27818 => 'Vodacom',
|
||||
278190 => 'TelAfrica (Wirles Connect)',
|
||||
278191 => 'TelAfrica (Wirles Connect)',
|
||||
278192 => 'TelAfrica (Wirles Connect)',
|
||||
2782 => 'Vodacom',
|
||||
2783 => 'MTN',
|
||||
2784 => 'Cell C',
|
||||
2787086 => 'Vodacom',
|
||||
2787087 => 'Vodacom',
|
||||
2787158 => 'Vodacom',
|
||||
2787285 => 'Vodacom',
|
||||
2787286 => 'Vodacom',
|
||||
2787287 => 'Vodacom',
|
||||
2787288 => 'Vodacom',
|
||||
2787289 => 'Vodacom',
|
||||
2787310 => 'Vodacom',
|
||||
);
|
||||
|
30
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/290.php
vendored
Normal file
30
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/290.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
29051 => 'Sure South Atlantic Ltd',
|
||||
29052 => 'Sure South Atlantic Ltd',
|
||||
29053 => 'Sure South Atlantic Ltd',
|
||||
29054 => 'Sure South Atlantic Ltd',
|
||||
29055 => 'Sure South Atlantic Ltd',
|
||||
29056 => 'Sure South Atlantic Ltd',
|
||||
29057 => 'Sure South Atlantic Ltd',
|
||||
29058 => 'Sure South Atlantic Ltd',
|
||||
29061 => 'Sure South Atlantic Ltd',
|
||||
29062 => 'Sure South Atlantic Ltd',
|
||||
29063 => 'Sure South Atlantic Ltd',
|
||||
29064 => 'Sure South Atlantic Ltd',
|
||||
29065 => 'Sure South Atlantic Ltd',
|
||||
29066 => 'Sure South Atlantic Ltd',
|
||||
29067 => 'Sure South Atlantic Ltd',
|
||||
29068 => 'Sure South Atlantic Ltd',
|
||||
);
|
@@ -11,11 +11,6 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
822 => 'Сеул',
|
||||
8232 => 'Инчон',
|
||||
8251 => 'Бусан',
|
||||
8252 => 'Улсан',
|
||||
8253 => 'Тегу',
|
||||
8262 => 'Квангџу',
|
||||
8264 => 'Чеџу',
|
||||
29117 => 'EriTel',
|
||||
2917 => 'EriTel',
|
||||
);
|
@@ -14,15 +14,15 @@ return array (
|
||||
29729 => 'Digicel',
|
||||
29756 => 'SETAR',
|
||||
29759 => 'SETAR',
|
||||
29763 => 'Digicel',
|
||||
29760 => 'SETAR',
|
||||
29762 => 'MIO Wireless',
|
||||
29763 => 'MIO Wireless',
|
||||
29764 => 'Digicel',
|
||||
29766 => 'SETAR',
|
||||
29769 => 'SETAR',
|
||||
297690 => 'SETAR',
|
||||
297699 => 'SETAR',
|
||||
29773 => 'Digicel',
|
||||
29774 => 'Digicel',
|
||||
29777 => 'SETAR',
|
||||
297995 => 'SETAR',
|
||||
297996 => 'SETAR',
|
||||
297997 => 'SETAR',
|
||||
297998 => 'SETAR',
|
||||
);
|
||||
|
@@ -11,8 +11,19 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
2982 => 'Faroese Telecom',
|
||||
29821 => 'Faroese Telecom',
|
||||
29822 => 'Faroese Telecom',
|
||||
29823 => 'Faroese Telecom',
|
||||
29824 => 'Faroese Telecom',
|
||||
29825 => 'Faroese Telecom',
|
||||
29826 => 'Faroese Telecom',
|
||||
29827 => 'Faroese Telecom',
|
||||
29828 => 'Faroese Telecom',
|
||||
29829 => 'Faroese Telecom',
|
||||
2985 => 'Vodafone',
|
||||
2986 => 'Vodafone',
|
||||
2987 => 'Vodafone',
|
||||
29878 => 'Faroese Telecom',
|
||||
29879 => 'Faroese Telecom',
|
||||
29891 => 'Tosa',
|
||||
29896 => 'Faroese Telecom',
|
||||
);
|
||||
|
@@ -34,6 +34,8 @@ return array (
|
||||
30690500 => 'MI Carrier Services',
|
||||
30690555 => 'AMD Telecom',
|
||||
30690574 => 'BWS',
|
||||
30690575 => 'BWS',
|
||||
30690588 => 'BWS',
|
||||
30690599 => 'BWS',
|
||||
306906 => 'Wind',
|
||||
306907 => 'Wind',
|
||||
@@ -41,23 +43,23 @@ return array (
|
||||
306909 => 'Wind',
|
||||
30691000 => 'BWS',
|
||||
30691234 => 'M-STAT',
|
||||
30691345 => 'Nova',
|
||||
30691345 => 'Forthnet',
|
||||
30691400 => 'AMD Telecom',
|
||||
30691600 => 'Compatel',
|
||||
30691700 => 'Inter Telecom',
|
||||
30691888 => 'OSE',
|
||||
30692354 => 'Premium Net International',
|
||||
30692356 => 'SIA NETBALT',
|
||||
30692428 => 'Premium Net International',
|
||||
30693 => 'Wind',
|
||||
30694 => 'Vodafone',
|
||||
306950 => 'Vodafone',
|
||||
306951 => 'Vodafone',
|
||||
30695200 => 'Compatel',
|
||||
30695210 => 'MI Carrier Services',
|
||||
3069522 => 'Vodafone',
|
||||
3069523 => 'Vodafone',
|
||||
30695290 => 'MI Carrier Services',
|
||||
30695299 => 'BWS',
|
||||
3069524 => 'BWS',
|
||||
3069529 => 'BWS',
|
||||
3069530 => 'Cyta',
|
||||
30695310 => 'MI Carrier Services',
|
||||
30695328 => 'Premium Net International',
|
||||
@@ -66,6 +68,7 @@ return array (
|
||||
30695355 => 'Cyta',
|
||||
30695400 => 'AMD Telecom',
|
||||
30695410 => 'MI Carrier Services',
|
||||
30695456 => 'BWS',
|
||||
30695490 => 'MI Carrier Services',
|
||||
30695499 => 'M-STAT',
|
||||
306955 => 'Vodafone',
|
||||
@@ -77,9 +80,11 @@ return array (
|
||||
30697 => 'Cosmote',
|
||||
30698 => 'Cosmote',
|
||||
3069900 => 'Wind',
|
||||
30699010 => 'BWS',
|
||||
30699022 => 'Yuboto',
|
||||
30699046 => 'Premium Net International',
|
||||
30699048 => 'AMD Telecom',
|
||||
30699099 => 'BWS',
|
||||
306991 => 'Wind',
|
||||
306992 => 'Wind',
|
||||
306993 => 'Wind',
|
||||
@@ -89,4 +94,5 @@ return array (
|
||||
306997 => 'Wind',
|
||||
306998 => 'Wind',
|
||||
306999 => 'Wind',
|
||||
3094 => 'Vodafone',
|
||||
);
|
||||
|
@@ -11,40 +11,46 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
31610 => 'KPN',
|
||||
3161 => 'KPN',
|
||||
31611 => 'Vodafone Libertel B.V.',
|
||||
31612 => 'KPN',
|
||||
31613 => 'KPN',
|
||||
31614 => 'T-Mobile',
|
||||
31615 => 'Vodafone Libertel B.V.',
|
||||
31616 => 'Telfort',
|
||||
31617 => 'Telfort',
|
||||
31618 => 'T-Mobile Thuis',
|
||||
31620 => 'KPN',
|
||||
31621 => 'Vodafone Libertel B.V.',
|
||||
31622 => 'KPN',
|
||||
31623 => 'KPN',
|
||||
31624 => 'T-Mobile',
|
||||
31625 => 'Vodafone Libertel B.V.',
|
||||
31626 => 'Telfort',
|
||||
31626 => 'KPN',
|
||||
31627 => 'Vodafone Libertel B.V.',
|
||||
31628 => 'T-Mobile Thuis',
|
||||
31629 => 'Vodafone Libertel B.V.',
|
||||
31630 => 'KPN',
|
||||
31631 => 'Vodafone Libertel B.V.',
|
||||
31633 => 'Telfort',
|
||||
31633 => 'KPN',
|
||||
31634 => 'T-Mobile',
|
||||
316351 => 'Intercity Zakelijk',
|
||||
316351 => 'Glotell B.V (V-Tell NL)',
|
||||
316352 => 'Lancelot',
|
||||
316353 => 'KPN',
|
||||
316356 => 'ASPIDER Solutions Nederland B.V.',
|
||||
316357 => 'ASPIDER Solutions Nederland B.V.',
|
||||
316358 => 'ASPIDER Solutions Nederland B.V.',
|
||||
316359 => 'ASPIDER Solutions Nederland B.V.',
|
||||
31636 => 'Tele2',
|
||||
31637 => 'Teleena (MVNE)',
|
||||
31638 => 'T-Mobile Thuis',
|
||||
31639 => 'T-Mobile Thuis',
|
||||
31640 => 'Tele2',
|
||||
31641 => 'T-Mobile',
|
||||
31642 => 'T-Mobile',
|
||||
31643 => 'T-Mobile',
|
||||
31644 => 'Telfort',
|
||||
31644 => 'KPN',
|
||||
31645 => 'Telfort',
|
||||
31646 => 'Vodafone Libertel B.V.',
|
||||
31647 => 'Telfort',
|
||||
31649 => 'Telfort',
|
||||
31647 => 'KPN',
|
||||
31648 => 'T-Mobile Thuis',
|
||||
31649 => 'KPN',
|
||||
31650 => 'Vodafone Libertel B.V.',
|
||||
31651 => 'KPN',
|
||||
31652 => 'Vodafone Libertel B.V.',
|
||||
@@ -53,10 +59,16 @@ return array (
|
||||
31655 => 'Vodafone Libertel B.V.',
|
||||
31656 => 'T-Mobile',
|
||||
31657 => 'KPN',
|
||||
31658 => 'Telfort',
|
||||
31658 => 'Lebara',
|
||||
316580 => 'Private Mobility Nederland',
|
||||
316587 => 'KPN',
|
||||
316588 => 'KPN',
|
||||
316589 => 'KPN',
|
||||
31659 => 'Vectone Mobile/Delight Mobile',
|
||||
316599 => 'Motto',
|
||||
31680 => 'Vodafone Libertel B.V.',
|
||||
31681 => 'T-Mobile',
|
||||
31682 => 'KPN',
|
||||
31683 => 'KPN',
|
||||
31684 => 'Lycamobile',
|
||||
31685 => 'Lycamobile',
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
3245001 => 'Gateway Communications',
|
||||
32455 => 'VOO',
|
||||
32456 => 'Mobile Vikings/JIM Mobile',
|
||||
32460 => 'Proximus',
|
||||
@@ -23,6 +24,7 @@ return array (
|
||||
324655 => 'Lycamobile',
|
||||
324656 => 'Lycamobile',
|
||||
324657 => 'Lycamobile',
|
||||
324658 => 'Lycamobile',
|
||||
324659 => 'Lycamobile',
|
||||
324660 => 'Lycamobile',
|
||||
324661 => 'Lycamobile',
|
||||
@@ -33,17 +35,32 @@ return array (
|
||||
324666 => 'Vectone',
|
||||
324667 => 'Vectone',
|
||||
324669 => 'Voxbone SA',
|
||||
324670 => 'Telenet',
|
||||
324671 => 'Join Experience Belgium',
|
||||
324672 => 'Join Experience Belgium',
|
||||
32467306 => 'Telenet',
|
||||
324674 => 'Febo Telecom',
|
||||
324676 => 'Lycamobile',
|
||||
324681 => 'Telenet',
|
||||
324682 => 'Telenet',
|
||||
324683 => 'Telenet',
|
||||
324684 => 'Telenet',
|
||||
324685 => 'Telenet',
|
||||
324677 => 'Lycamobile',
|
||||
324678 => 'Lycamobile',
|
||||
324679 => 'Interactive Digital Media GmbH',
|
||||
32468 => 'Telenet',
|
||||
324686 => 'OnOff Télécom SASU',
|
||||
324687 => 'Premium Routing GmbH',
|
||||
324688 => 'Premium Routing GmbH',
|
||||
324689 => 'Febo Telecom',
|
||||
32469 => 'Telenet',
|
||||
3247 => 'Proximus',
|
||||
3248 => 'Telenet',
|
||||
324802 => 'TISMI BV',
|
||||
324805 => 'Voyacom SPRL',
|
||||
324807 => 'MessageBird BV',
|
||||
324809 => 'Ericsson NV',
|
||||
32483 => 'Telenet',
|
||||
32484 => 'Telenet',
|
||||
32485 => 'Telenet',
|
||||
32486 => 'Telenet',
|
||||
32487 => 'Telenet',
|
||||
32488 => 'Telenet',
|
||||
32489 => 'Telenet',
|
||||
3249 => 'Orange',
|
||||
);
|
||||
|
@@ -11,62 +11,164 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
336000 => 'Free Mobile',
|
||||
336001 => 'Orange France',
|
||||
336002 => 'SFR',
|
||||
336003 => 'Bouygues',
|
||||
3360040 => 'Zeop',
|
||||
3360041 => 'Orange France',
|
||||
3360042 => 'Digicel Antilles Francaises Guyane',
|
||||
3360043 => 'Dauphin Telecom',
|
||||
3360044 => 'OUTREMER TELECOM',
|
||||
3360045 => 'UTS CARAIBES',
|
||||
3360051 => 'Orange France',
|
||||
3360052 => 'SFR',
|
||||
3360053 => 'BJT',
|
||||
3360054 => 'Only (Telco OI)',
|
||||
3360055 => 'Only (Telco OI)',
|
||||
336006 => 'Free Mobile',
|
||||
336007 => 'SFR',
|
||||
336008 => 'Orange France',
|
||||
336009 => 'Bouygues',
|
||||
33601 => 'SFR',
|
||||
33602 => 'SFR',
|
||||
33603 => 'SFR',
|
||||
336040 => 'SFR',
|
||||
336041 => 'SFR',
|
||||
336044 => 'SFR',
|
||||
336040 => 'Afone',
|
||||
336041 => 'Afone',
|
||||
336042 => 'e*Message',
|
||||
336043 => 'e*Message',
|
||||
336044 => 'Afone',
|
||||
336045 => 'SFR',
|
||||
336046 => 'SFR',
|
||||
336047 => 'SFR',
|
||||
336048 => 'SFR',
|
||||
336049 => 'SFR',
|
||||
336050 => 'SFR',
|
||||
336051 => 'SFR',
|
||||
336052 => 'SFR',
|
||||
336053 => 'SFR',
|
||||
336054 => 'SFR',
|
||||
336069 => 'SFR',
|
||||
336050 => 'Euroinformation Telecom',
|
||||
336051 => 'Euroinformation Telecom',
|
||||
336052 => 'Euroinformation Telecom',
|
||||
336053 => 'Euroinformation Telecom',
|
||||
336054 => 'Euroinformation Telecom',
|
||||
336055 => 'Lycamobile',
|
||||
336056 => 'Lycamobile',
|
||||
336057 => 'Lycamobile',
|
||||
336058 => 'Lycamobile',
|
||||
336059 => 'Lycamobile',
|
||||
336060 => 'e*Message',
|
||||
336061 => 'e*Message',
|
||||
336062 => 'e*Message',
|
||||
336063 => 'e*Message',
|
||||
336064 => 'Afone',
|
||||
336065 => 'Euroinformation Telecom',
|
||||
336066 => 'Euroinformation Telecom',
|
||||
336067 => 'Euroinformation Telecom',
|
||||
336068 => 'Euroinformation Telecom',
|
||||
336069 => 'Euroinformation Telecom',
|
||||
33607 => 'Orange France',
|
||||
33608 => 'Orange France',
|
||||
33609 => 'SFR',
|
||||
3361 => 'SFR',
|
||||
3362 => 'SFR',
|
||||
3363 => 'Orange France',
|
||||
33634 => 'SFR',
|
||||
33635 => 'SFR',
|
||||
336360 => 'SFR',
|
||||
336361 => 'SFR',
|
||||
336362 => 'SFR',
|
||||
336363 => 'SFR',
|
||||
336364 => 'SFR',
|
||||
33636 => 'Euroinformation Telecom',
|
||||
3363800 => 'Globalstar Europe',
|
||||
3363801 => 'Prixtel',
|
||||
3363802 => 'Prixtel',
|
||||
3363803 => 'Prixtel',
|
||||
3363804 => 'Prixtel',
|
||||
3363805 => 'Prixtel',
|
||||
3363806 => 'IP Directions',
|
||||
3363807 => 'Alphalink',
|
||||
3363808 => 'Alphalink',
|
||||
3363809 => 'Alphalink',
|
||||
33640 => 'Orange France',
|
||||
3364000 => 'Globalstar Europe',
|
||||
3364001 => 'Globalstar Europe',
|
||||
3364002 => 'Globalstar Europe',
|
||||
3364003 => 'Globalstar Europe',
|
||||
3364004 => 'Globalstar Europe',
|
||||
3364005 => 'Coriolis Telecom',
|
||||
3364006 => 'Coriolis Telecom',
|
||||
3364007 => 'Coriolis Telecom',
|
||||
3364008 => 'Coriolis Telecom',
|
||||
3364009 => 'Coriolis Telecom',
|
||||
336410 => 'La poste telecom',
|
||||
336411 => 'La poste telecom',
|
||||
336412 => 'La poste telecom',
|
||||
336413 => 'La poste telecom',
|
||||
336414 => 'La poste telecom',
|
||||
336415 => 'La poste telecom',
|
||||
3364160 => 'Euroinformation Telecom',
|
||||
3364161 => 'Euroinformation Telecom',
|
||||
3364162 => 'Mobiquithings',
|
||||
3364163 => 'SCT',
|
||||
3364164 => 'Legos',
|
||||
3364165 => 'e*Message',
|
||||
3364166 => 'SFR',
|
||||
3364167 => 'SFR',
|
||||
3364168 => 'SFR',
|
||||
3364169 => 'SFR',
|
||||
33642 => 'Orange France',
|
||||
33643 => 'Orange France',
|
||||
336440 => 'La poste telecom',
|
||||
336441 => 'Orange France',
|
||||
336442 => 'Orange France',
|
||||
336443 => 'Orange France',
|
||||
336444 => 'Transatel',
|
||||
336445 => 'Transatel',
|
||||
336446 => 'Transatel',
|
||||
336447 => 'La poste telecom',
|
||||
336448 => 'La poste telecom',
|
||||
336449 => 'La poste telecom',
|
||||
33645 => 'Orange France',
|
||||
33646 => 'SFR',
|
||||
33647 => 'Orange France',
|
||||
33648 => 'Orange France',
|
||||
33649 => 'Orange France',
|
||||
3364950 => 'Keyyo',
|
||||
3364990 => 'Intercall',
|
||||
3364991 => 'Intercall',
|
||||
3364994 => 'e*Message',
|
||||
3364995 => 'Prixtel',
|
||||
3364996 => 'e*Message',
|
||||
3364997 => 'e*Message',
|
||||
3364998 => 'Prixtel',
|
||||
3364999 => 'SFR',
|
||||
33650 => 'Bouygues',
|
||||
33653 => 'Bouygues',
|
||||
33651 => 'Free Mobile',
|
||||
33652 => 'Free Mobile',
|
||||
336530 => 'Bouygues',
|
||||
336531 => 'Bouygues',
|
||||
336532 => 'Bouygues',
|
||||
336533 => 'Bouygues',
|
||||
336534 => 'Bouygues',
|
||||
336535 => 'Free Mobile',
|
||||
336536 => 'Free Mobile',
|
||||
336537 => 'Free Mobile',
|
||||
336538 => 'Free Mobile',
|
||||
336539 => 'Free Mobile',
|
||||
33654 => 'Orange France',
|
||||
33655 => 'SFR',
|
||||
33656 => 'e*Message',
|
||||
3365660 => 'Mobiquithings',
|
||||
3365661 => 'Airbus Defence and Space',
|
||||
3365662 => 'Mobiquithings',
|
||||
3365663 => 'Mobiquithings',
|
||||
3365664 => 'Mobiquithings',
|
||||
3365665 => 'Mobiquithings',
|
||||
3365666 => 'Prixtel',
|
||||
3365667 => 'Prixtel',
|
||||
3365668 => 'Prixtel',
|
||||
3365669 => 'Prixtel',
|
||||
336567 => 'La poste telecom',
|
||||
336568 => 'La poste telecom',
|
||||
33657 => 'e*Message',
|
||||
33658 => 'Bouygues',
|
||||
33659 => 'Bouygues',
|
||||
3366 => 'Bouygues',
|
||||
3367 => 'Orange France',
|
||||
3368 => 'Orange France',
|
||||
33692 => 'Bouygues',
|
||||
33693 => 'Bouygues',
|
||||
33696 => 'Bouygues',
|
||||
33698 => 'Bouygues',
|
||||
33699 => 'Bouygues',
|
||||
33700000 => 'Orange France',
|
||||
@@ -74,4 +176,202 @@ return array (
|
||||
33700002 => 'Mobiquithings',
|
||||
33700003 => 'Bouygues',
|
||||
33700004 => 'Afone',
|
||||
33700005 => 'Coriolis Telecom',
|
||||
33700006 => 'Mobiquithings',
|
||||
337500 => 'Euroinformation Telecom',
|
||||
337501 => 'SFR',
|
||||
337502 => 'SFR',
|
||||
337503 => 'SFR',
|
||||
337504 => 'SFR',
|
||||
3375050 => 'Euroinformation Telecom',
|
||||
3375051 => 'Euroinformation Telecom',
|
||||
3375052 => 'Euroinformation Telecom',
|
||||
3375053 => 'Euroinformation Telecom',
|
||||
3375057 => 'Euroinformation Telecom',
|
||||
3375058 => 'Euroinformation Telecom',
|
||||
3375059 => 'Sewan communications',
|
||||
337506 => 'Orange France',
|
||||
3375060 => 'Euroinformation Telecom',
|
||||
3375070 => 'Euroinformation Telecom',
|
||||
3375071 => 'Netcom Group',
|
||||
3375072 => 'Netcom Group',
|
||||
3375073 => 'Alphalink',
|
||||
3375074 => 'Alphalink',
|
||||
3375075 => 'Alphalink',
|
||||
3375076 => 'Globalstar Europe',
|
||||
3375077 => 'Globalstar Europe',
|
||||
3375078 => 'China Telecom (France) Limited',
|
||||
3375079 => 'China Telecom (France) Limited',
|
||||
337508 => 'SFR',
|
||||
337509 => 'SFR',
|
||||
33751 => 'Lycamobile',
|
||||
337516 => 'SFR',
|
||||
337517 => 'Completel',
|
||||
337518 => 'Lebara France Limited',
|
||||
337519 => 'Lebara France Limited',
|
||||
3375202 => 'Prixtel',
|
||||
3375203 => 'Prixtel',
|
||||
3375204 => 'Prixtel',
|
||||
3375205 => 'Prixtel',
|
||||
3375206 => 'Prixtel',
|
||||
3375207 => 'Prixtel',
|
||||
3375208 => 'Prixtel',
|
||||
3375209 => 'Prixtel',
|
||||
337521 => 'Lebara France Limited',
|
||||
337522 => 'Lebara France Limited',
|
||||
337523 => 'Lebara France Limited',
|
||||
337524 => 'Lebara France Limited',
|
||||
337525 => 'Lebara France Limited',
|
||||
337526 => 'SFR',
|
||||
337527 => 'Lebara France Limited',
|
||||
337528 => 'Lebara France Limited',
|
||||
337529 => 'Lebara France Limited',
|
||||
33753 => 'Lycamobile',
|
||||
337540 => 'Lebara France Limited',
|
||||
337541 => 'Lebara France Limited',
|
||||
337542 => 'Lebara France Limited',
|
||||
337543 => 'Prixtel',
|
||||
3375430 => 'TDF',
|
||||
3375431 => 'Legos',
|
||||
3375432 => 'Euroinformation Telecom',
|
||||
337544 => 'Lebara France Limited',
|
||||
337545 => 'Lebara France Limited',
|
||||
337546 => 'Mobiquithings',
|
||||
337547 => 'ACN Communications',
|
||||
337548 => 'Completel',
|
||||
337549 => 'Completel',
|
||||
33755 => 'Lebara France Limited',
|
||||
3375550 => 'Legos',
|
||||
3375551 => 'Legos',
|
||||
3375552 => 'Legos',
|
||||
3375553 => 'Legos',
|
||||
3375554 => 'Legos',
|
||||
3375555 => 'Euroinformation Telecom',
|
||||
3375556 => 'Intercall',
|
||||
3375557 => 'Intercall',
|
||||
3375558 => 'Sewan communications',
|
||||
3375559 => 'Sewan communications',
|
||||
3375560 => 'Prixtel',
|
||||
3375561 => 'Prixtel',
|
||||
3375562 => 'Prixtel',
|
||||
3375563 => 'Prixtel',
|
||||
3375564 => 'Prixtel',
|
||||
3375565 => 'Sewan communications',
|
||||
3375566 => 'Euroinformation Telecom',
|
||||
3375567 => 'Euroinformation Telecom',
|
||||
3375568 => 'Euroinformation Telecom',
|
||||
3375569 => 'Axialys',
|
||||
337560 => 'Euroinformation Telecom',
|
||||
337561 => 'Euroinformation Telecom',
|
||||
337562 => 'Euroinformation Telecom',
|
||||
3375630 => 'Euroinformation Telecom',
|
||||
3375631 => 'Euroinformation Telecom',
|
||||
3375632 => 'Euroinformation Telecom',
|
||||
3375633 => 'Euroinformation Telecom',
|
||||
3375634 => 'Euroinformation Telecom',
|
||||
3375644 => 'SFR',
|
||||
3375645 => 'SFR',
|
||||
337565 => 'Transatel',
|
||||
337566 => 'Transatel',
|
||||
337567 => 'Transatel',
|
||||
337568 => 'Transatel',
|
||||
337569 => 'Transatel',
|
||||
3375700 => 'Sewan communications',
|
||||
3375701 => 'Mobiweb telecom limited',
|
||||
3375702 => 'Mobiweb telecom limited',
|
||||
3375703 => 'Mobiweb telecom limited',
|
||||
3375704 => 'Mobiweb telecom limited',
|
||||
3375705 => 'Mobiweb telecom limited',
|
||||
3375706 => 'Nordnet',
|
||||
3375707 => 'Keyyo',
|
||||
3375717 => 'Keyyo',
|
||||
337572 => 'Mobiquithings',
|
||||
337573 => 'Mobiquithings',
|
||||
337574 => 'Coriolis Telecom',
|
||||
337575 => 'Coriolis Telecom',
|
||||
3375757 => 'Euroinformation Telecom',
|
||||
3375758 => 'Euroinformation Telecom',
|
||||
3375759 => 'Twilio Ireland Limited',
|
||||
3375760 => 'Twilio Ireland Limited',
|
||||
3375763 => 'Euroinformation Telecom',
|
||||
3375767 => 'Euroinformation Telecom',
|
||||
3375770 => 'SFR',
|
||||
3375771 => 'SFR',
|
||||
3375772 => 'SFR',
|
||||
3375773 => 'SFR',
|
||||
3375774 => 'SFR',
|
||||
3375777 => 'Euroinformation Telecom',
|
||||
3375779 => 'Halys',
|
||||
3375786 => 'Orange France',
|
||||
3375787 => 'Euroinformation Telecom',
|
||||
3375788 => 'BJT',
|
||||
3375789 => 'BJT',
|
||||
337579 => 'Legos',
|
||||
33758 => 'Lycamobile',
|
||||
33759 => 'Vectone mobile',
|
||||
3376 => 'Bouygues',
|
||||
33766 => 'Free Mobile',
|
||||
33767 => 'Free Mobile',
|
||||
33768 => 'Free Mobile',
|
||||
33769 => 'Free Mobile',
|
||||
337700 => 'Orange France',
|
||||
337701 => 'Orange France',
|
||||
337702 => 'Orange France',
|
||||
337703 => 'SFR',
|
||||
337704 => 'SFR',
|
||||
337705 => 'Euroinformation Telecom',
|
||||
337706 => 'Euroinformation Telecom',
|
||||
337707 => 'Euroinformation Telecom',
|
||||
337708 => 'Euroinformation Telecom',
|
||||
337709 => 'Euroinformation Telecom',
|
||||
337710 => 'Euroinformation Telecom',
|
||||
337711 => 'Euroinformation Telecom',
|
||||
337712 => 'Euroinformation Telecom',
|
||||
337713 => 'SFR',
|
||||
337714 => 'SFR',
|
||||
3377150 => 'SFR',
|
||||
3377151 => 'SFR',
|
||||
3377152 => 'SFR',
|
||||
3377153 => 'SFR',
|
||||
3377154 => 'SFR',
|
||||
3377155 => 'Euroinformation Telecom',
|
||||
3377156 => 'Euroinformation Telecom',
|
||||
3377157 => 'Euroinformation Telecom',
|
||||
3377158 => 'Euroinformation Telecom',
|
||||
3377159 => 'Euroinformation Telecom',
|
||||
337716 => 'Euroinformation Telecom',
|
||||
337717 => 'Euroinformation Telecom',
|
||||
337718 => 'Euroinformation Telecom',
|
||||
3377190 => 'Euroinformation Telecom',
|
||||
3377191 => 'Euroinformation Telecom',
|
||||
3377192 => 'Euroinformation Telecom',
|
||||
3377193 => 'Euroinformation Telecom',
|
||||
3377194 => 'Euroinformation Telecom',
|
||||
33772 => 'Orange France',
|
||||
33773 => 'Syma mobile',
|
||||
33774 => 'Syma mobile',
|
||||
337750 => 'SFR',
|
||||
337751 => 'SFR',
|
||||
337752 => 'SFR',
|
||||
337753 => 'SFR',
|
||||
337754 => 'SFR',
|
||||
337755 => 'Mobiquithings',
|
||||
337756 => 'Mobiquithings',
|
||||
337757 => 'Free Mobile',
|
||||
33776 => 'SFR',
|
||||
33777 => 'SFR',
|
||||
33778 => 'SFR',
|
||||
33779 => 'SFR',
|
||||
3378 => 'Orange France',
|
||||
33780 => 'Afone',
|
||||
337807 => 'Lebara France Limited',
|
||||
337808 => 'Lebara France Limited',
|
||||
337809 => 'Onoff telecom',
|
||||
33781 => 'Free Mobile',
|
||||
33782 => 'Free Mobile',
|
||||
33783 => 'Free Mobile',
|
||||
337846 => 'La poste telecom',
|
||||
337847 => 'La poste telecom',
|
||||
337848 => 'La poste telecom',
|
||||
337849 => 'Euroinformation Telecom',
|
||||
);
|
||||
|
@@ -11,21 +11,24 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
345901 => 'Movistar',
|
||||
345906 => 'Vodafone',
|
||||
34600 => 'Vodafone',
|
||||
346010 => 'Vodafone',
|
||||
346011 => 'Vodafone',
|
||||
346012 => 'Vodafone',
|
||||
346013 => 'Vodafone',
|
||||
346014 => 'Vodafone',
|
||||
346015 => 'HITS',
|
||||
346016 => 'Lcrcom',
|
||||
346017 => 'Vodafone',
|
||||
34601 => 'Vodafone',
|
||||
346016 => 'Orange',
|
||||
346018 => 'Orange',
|
||||
346019 => 'Orange',
|
||||
346020 => 'Lycamobile',
|
||||
346021 => 'Lycamobile',
|
||||
3460220 => 'Orange',
|
||||
3460221 => 'Ion mobile',
|
||||
3460222 => 'Vozelia',
|
||||
3460223 => 'Orange',
|
||||
3460224 => 'Oceans',
|
||||
3460225 => 'VozTelecom',
|
||||
3460226 => 'Orange',
|
||||
3460227 => 'Orange',
|
||||
3460228 => 'Orange',
|
||||
3460229 => 'Boutique',
|
||||
346023 => 'Lycamobile',
|
||||
346024 => 'Lebara',
|
||||
@@ -53,10 +56,9 @@ return array (
|
||||
346037 => 'Vodafone',
|
||||
346038 => 'Vodafone',
|
||||
346039 => 'Lebara',
|
||||
346040 => 'R',
|
||||
346041 => 'Lebara',
|
||||
346042 => 'Lebara',
|
||||
346043 => 'Lebara',
|
||||
34604 => 'Lebara',
|
||||
346040 => 'Orange',
|
||||
346045 => 'Orange',
|
||||
34605 => 'Orange',
|
||||
3460529 => 'MasMovil',
|
||||
34606 => 'Movistar',
|
||||
@@ -64,26 +66,35 @@ return array (
|
||||
34608 => 'Movistar',
|
||||
34609 => 'Movistar',
|
||||
34610 => 'Vodafone',
|
||||
346110 => 'Republica Movil',
|
||||
34611 => 'Republica Movil',
|
||||
346110 => 'Orange',
|
||||
346112 => 'Lebara',
|
||||
346113 => 'Lebara',
|
||||
346120 => 'Syma',
|
||||
346121 => 'Syma',
|
||||
34612 => 'Syma',
|
||||
346122 => 'Lycamobile',
|
||||
346124 => 'Lycamobile',
|
||||
346125 => 'Lycamobile',
|
||||
34613 => 'Yoigo',
|
||||
34615 => 'Orange',
|
||||
34616 => 'Movistar',
|
||||
34617 => 'Vodafone',
|
||||
34618 => 'Movistar',
|
||||
34619 => 'Movistar',
|
||||
34620 => 'Movistar',
|
||||
346212 => 'Ion mobile',
|
||||
346210 => 'Republica Movil',
|
||||
346211 => 'Republica Movil',
|
||||
346212 => 'Movistar',
|
||||
346213 => 'Republica Movil',
|
||||
346214 => 'Republica Movil',
|
||||
346215 => 'Republica Movil',
|
||||
346216 => 'Republica Movil',
|
||||
34622 => 'Yoigo',
|
||||
346230 => 'Yoigo',
|
||||
346231 => 'Yoigo',
|
||||
346236 => 'Altecom',
|
||||
34624 => 'DigiMobil',
|
||||
34625 => 'Orange',
|
||||
3462529 => 'MasMovil',
|
||||
3462529 => 'Yoigo',
|
||||
34626 => 'Movistar',
|
||||
34627 => 'Vodafone',
|
||||
34628 => 'Movistar',
|
||||
@@ -92,42 +103,31 @@ return array (
|
||||
34631 => 'Lycamobile',
|
||||
34632 => 'Lycamobile',
|
||||
34633 => 'Yoigo',
|
||||
34634 => 'Vodafone',
|
||||
346340 => 'Lebara',
|
||||
346341 => 'Lebara',
|
||||
346342 => 'Vodafone',
|
||||
346343 => 'HITS',
|
||||
346344 => 'Eroski movil',
|
||||
346345 => 'PepePhone',
|
||||
346346 => 'Vodafone',
|
||||
346347 => 'Vodafone',
|
||||
346348 => 'Vodafone',
|
||||
346349 => 'Vodafone',
|
||||
346343 => 'Carrier Enabler',
|
||||
346345 => 'Movistar',
|
||||
34635 => 'Orange',
|
||||
3463529 => 'MasMovil',
|
||||
3463529 => 'Yoigo',
|
||||
34636 => 'Movistar',
|
||||
34637 => 'Vodafone',
|
||||
34638 => 'Movistar',
|
||||
34639 => 'Movistar',
|
||||
34640 => 'Orange',
|
||||
346404 => 'MasMovil',
|
||||
34641 => 'DigiMobil',
|
||||
34642 => 'DigiMobil',
|
||||
346430 => 'DigiMobil',
|
||||
346431 => 'DigiMobil',
|
||||
346432 => 'DigiMobil',
|
||||
346433 => 'DigiMobil',
|
||||
346434 => 'DigiMobil',
|
||||
346435 => 'DigiMobil',
|
||||
346436 => 'DigiMobil',
|
||||
34644 => 'Simyo',
|
||||
34643 => 'DigiMobil',
|
||||
34644 => 'Orange',
|
||||
34645 => 'Orange',
|
||||
3464529 => 'MasMovil',
|
||||
3464529 => 'Yoigo',
|
||||
34646 => 'Movistar',
|
||||
34647 => 'Vodafone',
|
||||
34648 => 'Movistar',
|
||||
34649 => 'Movistar',
|
||||
3465 => 'Orange',
|
||||
34650 => 'Movistar',
|
||||
3465229 => 'MasMovil',
|
||||
3465229 => 'Yoigo',
|
||||
3465329 => 'DIA',
|
||||
3465429 => 'DIA',
|
||||
3465529 => 'DIA',
|
||||
@@ -143,7 +143,7 @@ return array (
|
||||
34666 => 'Vodafone',
|
||||
34667 => 'Vodafone',
|
||||
346681 => 'Truphone',
|
||||
346685 => 'Carrefour',
|
||||
346685 => 'Orange',
|
||||
346686 => 'Parlem',
|
||||
346688 => 'Parlem',
|
||||
34669 => 'Movistar',
|
||||
@@ -161,22 +161,22 @@ return array (
|
||||
346813 => 'Movistar',
|
||||
346814 => 'Movistar',
|
||||
346815 => 'Movistar',
|
||||
346816 => 'MasMovil',
|
||||
346816 => 'Yoigo',
|
||||
34682 => 'Movistar',
|
||||
34683 => 'Movistar',
|
||||
346840 => 'Tuenti',
|
||||
346841 => 'Tuenti',
|
||||
346842 => 'Tuenti',
|
||||
346843 => 'Tuenti',
|
||||
346840 => 'Movistar',
|
||||
346841 => 'Movistar',
|
||||
346842 => 'Movistar',
|
||||
346843 => 'Movistar',
|
||||
3468440 => 'Eurona',
|
||||
3468441 => 'Lemonvil',
|
||||
3468442 => 'BluePhone',
|
||||
3468443 => 'BT',
|
||||
3468444 => 'BT',
|
||||
3468445 => 'Ion mobile',
|
||||
3468445 => 'Aire Networks',
|
||||
3468447 => 'Quattre',
|
||||
3468448 => 'Nethits',
|
||||
346845 => 'Tuenti',
|
||||
346845 => 'Movistar',
|
||||
346846 => 'Telecable',
|
||||
34685 => 'Orange',
|
||||
3468529 => 'Carrefour',
|
||||
@@ -184,9 +184,9 @@ return array (
|
||||
34687 => 'Vodafone',
|
||||
346880 => 'YouMobile',
|
||||
346881 => 'YouMobile',
|
||||
346882 => 'MasMovil',
|
||||
346883 => 'MasMovil',
|
||||
346884 => 'MasMovil',
|
||||
346882 => 'Yoigo',
|
||||
346883 => 'Yoigo',
|
||||
346884 => 'Yoigo',
|
||||
346885 => 'YouMobile',
|
||||
346886 => 'Euskaltel',
|
||||
346887 => 'Euskaltel',
|
||||
@@ -197,39 +197,40 @@ return array (
|
||||
34689 => 'Movistar',
|
||||
34690 => 'Movistar',
|
||||
34691 => 'Orange',
|
||||
346919 => 'MasMovil',
|
||||
346919 => 'Yoigo',
|
||||
3469190 => 'MasMovil',
|
||||
3469198 => 'Carrefour',
|
||||
3469199 => 'Carrefour',
|
||||
34692 => 'Orange',
|
||||
3469229 => 'Carrefour',
|
||||
346927 => 'Carrefour',
|
||||
3469300 => 'MasMovil',
|
||||
3469301 => 'MasMovil',
|
||||
3469302 => 'MasMovil',
|
||||
3469303 => 'MasMovil',
|
||||
3469304 => 'MasMovil',
|
||||
3469305 => 'MasMovil',
|
||||
3469306 => 'MasMovil',
|
||||
3469301 => 'Yoigo',
|
||||
3469302 => 'Yoigo',
|
||||
3469303 => 'Yoigo',
|
||||
3469304 => 'Yoigo',
|
||||
3469305 => 'Yoigo',
|
||||
3469306 => 'Yoigo',
|
||||
346931 => 'Orange',
|
||||
3469310 => 'MasMovil',
|
||||
346932 => 'MasMovil',
|
||||
346932 => 'Yoigo',
|
||||
3469320 => 'Carrefour',
|
||||
3469321 => 'Carrefour',
|
||||
3469329 => 'Orange',
|
||||
346933 => 'Carrefour',
|
||||
3469336 => 'MasMovil',
|
||||
3469337 => 'MasMovil',
|
||||
3469336 => 'Yoigo',
|
||||
3469337 => 'Yoigo',
|
||||
3469340 => 'DIA',
|
||||
3469341 => 'DIA',
|
||||
3469342 => 'DIA',
|
||||
3469343 => 'DIA',
|
||||
3469344 => 'DIA',
|
||||
3469345 => 'MasMovil',
|
||||
3469346 => 'MasMovil',
|
||||
3469347 => 'MasMovil',
|
||||
3469348 => 'MasMovil',
|
||||
3469349 => 'MasMovil',
|
||||
346935 => 'MasMovil',
|
||||
3469345 => 'Yoigo',
|
||||
3469346 => 'Yoigo',
|
||||
3469347 => 'Yoigo',
|
||||
3469348 => 'Yoigo',
|
||||
3469349 => 'Yoigo',
|
||||
346935 => 'Yoigo',
|
||||
3469360 => 'DIA',
|
||||
3469361 => 'DIA',
|
||||
3469362 => 'DIA',
|
||||
@@ -237,37 +238,22 @@ return array (
|
||||
3469364 => 'DIA',
|
||||
3469365 => 'Carrefour',
|
||||
3469366 => 'Carrefour',
|
||||
3469367 => 'MasMovil',
|
||||
3469368 => 'MasMovil',
|
||||
3469369 => 'MasMovil',
|
||||
346937 => 'MasMovil',
|
||||
3469380 => 'MasMovil',
|
||||
3469381 => 'MasMovil',
|
||||
3469382 => 'MasMovil',
|
||||
3469383 => 'Carrefour',
|
||||
3469384 => 'Carrefour',
|
||||
3469385 => 'MasMovil',
|
||||
3469386 => 'MasMovil',
|
||||
3469387 => 'Carrefour',
|
||||
3469388 => 'Carrefour',
|
||||
3469389 => 'Orange',
|
||||
3469391 => 'MasMovil',
|
||||
3469392 => 'MasMovil',
|
||||
3469393 => 'MasMovil',
|
||||
3469394 => 'MasMovil',
|
||||
3469395 => 'MasMovil',
|
||||
3469396 => 'MasMovil',
|
||||
3469397 => 'MasMovil',
|
||||
3469398 => 'MasMovil',
|
||||
3469399 => 'MasMovil',
|
||||
3469367 => 'Yoigo',
|
||||
3469368 => 'Yoigo',
|
||||
3469369 => 'Yoigo',
|
||||
346937 => 'Yoigo',
|
||||
346938 => 'Yoigo',
|
||||
346939 => 'Yoigo',
|
||||
34694 => 'Movistar',
|
||||
346944 => 'MasMovil',
|
||||
346944 => 'Yoigo',
|
||||
346945 => 'Yoigo',
|
||||
346946 => 'Yoigo',
|
||||
34695 => 'Orange',
|
||||
34696 => 'Movistar',
|
||||
34697 => 'Vodafone',
|
||||
34698 => 'MasMovil',
|
||||
34698 => 'Yoigo',
|
||||
346981 => 'R',
|
||||
346989 => 'Eroski movil',
|
||||
346989 => 'Vodafone',
|
||||
34699 => 'Movistar',
|
||||
347110 => 'Zinnia',
|
||||
347111 => 'Vodafone',
|
||||
@@ -293,12 +279,14 @@ return array (
|
||||
347225 => 'Yoigo',
|
||||
347226 => 'Yoigo',
|
||||
3472260 => 'MasMovil',
|
||||
3472261 => 'PepePhone',
|
||||
347227 => 'Yoigo',
|
||||
347228 => 'Yoigo',
|
||||
347277 => 'Vodafone',
|
||||
3474442 => 'Deion',
|
||||
3474443 => 'InfoVOIP',
|
||||
3474448 => 'Ion mobile',
|
||||
3474447 => 'Jetnet',
|
||||
3474448 => 'Aire Networks',
|
||||
3474449 => 'Alai',
|
||||
347446 => 'PTV',
|
||||
347477 => 'Orange',
|
||||
|
@@ -11,6 +11,11 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
3505 => 'GibTel',
|
||||
3506 => 'Limba',
|
||||
35051 => 'Gibfibre',
|
||||
35052 => 'Gibfibre',
|
||||
35054 => 'GibTel',
|
||||
35056 => 'GibTel',
|
||||
35057 => 'GibTel',
|
||||
35058 => 'GibTel',
|
||||
3506 => 'GibTel',
|
||||
);
|
||||
|
@@ -11,6 +11,21 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
3511 => 'NOS',
|
||||
351609230 => 'NOS',
|
||||
35160929 => 'NOS',
|
||||
3516093 => 'NOS',
|
||||
351639230 => 'NOS',
|
||||
351639233 => 'Digi Communications',
|
||||
35163929 => 'NOS',
|
||||
3516393 => 'NOS',
|
||||
351659230 => 'NOS',
|
||||
351659233 => 'Digi Communications',
|
||||
35165929 => 'NOS',
|
||||
3516593 => 'NOS',
|
||||
351669230 => 'NOS',
|
||||
35166929 => 'NOS',
|
||||
3516693 => 'NOS',
|
||||
35191 => 'Vodafone',
|
||||
3519200 => 'Lycamobile',
|
||||
3519201 => 'Lycamobile',
|
||||
@@ -19,19 +34,15 @@ return array (
|
||||
3519204 => 'Lycamobile',
|
||||
3519205 => 'Lycamobile',
|
||||
351921 => 'Vodafone',
|
||||
3519220 => 'CTT',
|
||||
3519221 => 'CTT',
|
||||
3519222 => 'CTT',
|
||||
3519230 => 'Vectone',
|
||||
3519231 => 'Vectone',
|
||||
3519232 => 'Vectone',
|
||||
3519233 => 'Vectone',
|
||||
3519234 => 'Vectone',
|
||||
3519240 => 'MEO',
|
||||
3519241 => 'MEO',
|
||||
3519242 => 'MEO',
|
||||
3519243 => 'MEO',
|
||||
3519244 => 'MEO',
|
||||
3519220 => 'Vodafone',
|
||||
3519221 => 'MEO',
|
||||
3519222 => 'MEO',
|
||||
3519230 => 'NOS',
|
||||
3519231 => 'Vodafone',
|
||||
3519232 => 'MEO',
|
||||
3519233 => 'Digi Communications',
|
||||
3519234 => 'NOS',
|
||||
351924 => 'MEO',
|
||||
351925 => 'MEO',
|
||||
351926 => 'MEO',
|
||||
351927 => 'MEO',
|
||||
@@ -43,6 +54,7 @@ return array (
|
||||
3519292 => 'NOS',
|
||||
3519293 => 'NOS',
|
||||
3519294 => 'NOS',
|
||||
3519295 => 'Sumamovil Portugal',
|
||||
35193 => 'NOS',
|
||||
35196 => 'MEO',
|
||||
);
|
||||
|
@@ -16,5 +16,31 @@ return array (
|
||||
35386 => 'O2',
|
||||
35387 => 'Vodafone',
|
||||
35388 => 'eMobile',
|
||||
35389 => 'Tesco Mobile',
|
||||
353890 => 'Tesco Mobile',
|
||||
3538900 => 'Eircom',
|
||||
353891 => 'Tesco Mobile',
|
||||
353892 => 'Liffey Telecom',
|
||||
3538928 => 'Tesco Mobile',
|
||||
3538929 => 'Tesco Mobile',
|
||||
353893 => 'Tesco Mobile',
|
||||
353894 => 'Liffey Telecom',
|
||||
353895 => '3',
|
||||
353896 => 'Tesco Mobile',
|
||||
3538960 => 'Virgin Media',
|
||||
3538961 => 'Virgin Media',
|
||||
3538962 => 'Virgin Media',
|
||||
353897 => 'Tesco Mobile',
|
||||
3538970 => 'Carphone Warehouse Ireland Mobile Limited',
|
||||
3538971 => 'Carphone Warehouse Ireland Mobile Limited',
|
||||
353898 => 'Tesco Mobile',
|
||||
3538990 => 'Tesco Mobile',
|
||||
3538991 => 'Tesco Mobile',
|
||||
3538992 => 'Tesco Mobile',
|
||||
3538993 => 'Tesco Mobile',
|
||||
3538994 => 'Lycamobile',
|
||||
3538995 => 'Lycamobile',
|
||||
3538996 => 'Lycamobile',
|
||||
3538997 => 'Lycamobile',
|
||||
3538998 => 'Lycamobile',
|
||||
3538999 => 'Tesco Mobile',
|
||||
);
|
||||
|
@@ -14,17 +14,11 @@ return array (
|
||||
354385 => 'Síminn',
|
||||
354388 => 'IMC',
|
||||
354389 => 'IMC',
|
||||
354611 => 'Tal',
|
||||
354612 => 'Tal',
|
||||
354613 => 'Tal',
|
||||
354614 => 'Tal',
|
||||
354615 => 'Vodafone',
|
||||
354616 => 'Vodafone',
|
||||
354617 => 'Vodafone',
|
||||
354618 => 'Vodafone',
|
||||
35461 => 'Vodafone',
|
||||
35462 => 'Vodafone',
|
||||
354630 => 'IMC',
|
||||
354632 => 'Tismi',
|
||||
354636 => 'Öryggisfjarskipti',
|
||||
354637 => 'Öryggisfjarskipti',
|
||||
354638 => 'Öryggisfjarskipti',
|
||||
354639 => 'Öryggisfjarskipti',
|
||||
@@ -40,7 +34,10 @@ return array (
|
||||
354659 => 'Vodafone',
|
||||
35466 => 'Vodafone',
|
||||
35467 => 'Vodafone',
|
||||
35468 => 'Vodafone',
|
||||
354680 => 'Vodafone',
|
||||
354686 => 'Vodafone',
|
||||
354687 => 'Vodafone',
|
||||
354688 => 'Vodafone',
|
||||
35469 => 'Vodafone',
|
||||
354750 => 'Síminn',
|
||||
354755 => 'Síminn',
|
||||
@@ -55,6 +52,7 @@ return array (
|
||||
35485 => 'Síminn',
|
||||
35486 => 'Síminn',
|
||||
354882 => 'Síminn',
|
||||
354883 => 'Síminn',
|
||||
354888 => 'Síminn',
|
||||
35489 => 'Síminn',
|
||||
);
|
||||
|
@@ -14,10 +14,10 @@ return array (
|
||||
35672 => 'GO Mobile',
|
||||
35677 => 'Melita Mobile',
|
||||
35679 => 'GO Mobile',
|
||||
35692 => 'Vodafone',
|
||||
35696 => 'YOM',
|
||||
356981 => 'Redtouch Fone',
|
||||
35692 => 'epic',
|
||||
3569696 => 'epic',
|
||||
356981 => 'Melita Mobile',
|
||||
356988 => 'GO Mobile',
|
||||
356989 => 'Vodafone',
|
||||
35699 => 'Vodafone',
|
||||
356989 => 'epic',
|
||||
35699 => 'epic',
|
||||
);
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
35791 => 'Cytamobile-Vodafone',
|
||||
35794 => 'Lemontel',
|
||||
35795 => 'PrimeTel',
|
||||
35796 => 'MTN',
|
||||
|
@@ -16,6 +16,10 @@ return array (
|
||||
35842 => 'Telia',
|
||||
3584320 => 'Cuuma',
|
||||
3584321 => 'Cuuma',
|
||||
3584322 => 'Benemen Oy',
|
||||
3584323 => 'Top Connect OU',
|
||||
3584324 => 'Nord Connect SIA',
|
||||
3584325 => 'NETTIA',
|
||||
358436 => 'DNA',
|
||||
358438 => 'DNA',
|
||||
35844 => 'DNA',
|
||||
@@ -44,6 +48,7 @@ return array (
|
||||
358456 => 'Elisa',
|
||||
3584570 => 'AMT',
|
||||
3584571 => 'Tismi',
|
||||
3584572 => 'Telavox AB',
|
||||
3584573 => 'AMT',
|
||||
3584574 => 'DNA',
|
||||
3584575 => 'AMT',
|
||||
@@ -53,5 +58,6 @@ return array (
|
||||
3584579 => 'DNA',
|
||||
358458 => 'Elisa',
|
||||
35846 => 'Elisa',
|
||||
35849 => 'Elisa',
|
||||
35850 => 'Elisa',
|
||||
);
|
||||
|
@@ -12,10 +12,27 @@
|
||||
|
||||
return array (
|
||||
35987 => 'Vivacom',
|
||||
35988 => 'Mtel',
|
||||
35988 => 'A1',
|
||||
35989 => 'Telenor',
|
||||
359988 => 'Bob',
|
||||
359989 => 'Mtel',
|
||||
359996 => 'Bulsatcom',
|
||||
359999 => 'MAX',
|
||||
359989 => 'A1',
|
||||
3599960 => 'A1',
|
||||
3599961 => 'A1',
|
||||
3599962 => 'A1',
|
||||
3599964 => 'Telenor',
|
||||
3599965 => 'Telenor',
|
||||
3599966 => 'Telenor',
|
||||
3599967 => 'Vivacom',
|
||||
3599968 => 'Vivacom',
|
||||
3599969 => 'Vivacom',
|
||||
3599990 => 'A1',
|
||||
3599991 => 'A1',
|
||||
3599992 => 'A1',
|
||||
3599993 => 'A1',
|
||||
3599994 => 'Telenor',
|
||||
3599995 => 'Telenor',
|
||||
3599996 => 'Vivacom',
|
||||
3599997 => 'Vivacom',
|
||||
3599998 => 'Vivacom',
|
||||
3599999 => 'Vivacom',
|
||||
);
|
||||
|
@@ -11,7 +11,58 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
3620 => 'Telenor',
|
||||
3630 => 'T-Mobile',
|
||||
3620 => 'Yettel Hungary',
|
||||
3630 => 'Magyar Telekom',
|
||||
36312000 => 'Netfone Telecom',
|
||||
36312001 => 'Netfone Telecom',
|
||||
3631310 => 'Vodafone',
|
||||
3631311 => 'Vodafone',
|
||||
3631312 => 'Vodafone',
|
||||
3631313 => 'Vodafone',
|
||||
3631314 => 'Vodafone',
|
||||
3631315 => 'Vodafone',
|
||||
3631316 => 'Vodafone',
|
||||
3631317 => 'Vodafone',
|
||||
3631318 => 'Vodafone',
|
||||
36313190 => 'Vodafone',
|
||||
36313191 => 'Vodafone',
|
||||
36313192 => 'Vodafone',
|
||||
36313193 => 'Vodafone',
|
||||
36313194 => 'Vodafone',
|
||||
36313195 => 'Vodafone',
|
||||
36313196 => 'Vodafone',
|
||||
36313197 => 'Vodafone',
|
||||
36313199 => 'Vodafone',
|
||||
3631320 => 'Vodafone',
|
||||
3631321 => 'Vodafone',
|
||||
3631322 => 'Vodafone',
|
||||
3631323 => 'Vodafone',
|
||||
3631324 => 'Vodafone',
|
||||
3631325 => 'Vodafone',
|
||||
3631326 => 'Vodafone',
|
||||
3631327 => 'Vodafone',
|
||||
3631328 => 'Vodafone',
|
||||
36313290 => 'Vodafone',
|
||||
36313291 => 'Vodafone',
|
||||
36313292 => 'Vodafone',
|
||||
3631330 => 'Vodafone',
|
||||
3631331 => 'Vodafone',
|
||||
3631332 => 'Vodafone',
|
||||
36313330 => 'Vidanet',
|
||||
36313331 => 'Vidanet',
|
||||
36313666 => 'Vodafone',
|
||||
36317000 => 'TARR',
|
||||
36317001 => 'TARR',
|
||||
36317002 => 'TARR',
|
||||
36317003 => 'TARR',
|
||||
36317004 => 'TARR',
|
||||
3631770 => 'UPC',
|
||||
3631771 => 'UPC',
|
||||
363178 => 'UPC',
|
||||
3631790 => 'UPC',
|
||||
36501 => 'DIGI',
|
||||
36502 => 'DIGI',
|
||||
36508 => 'MVM Net',
|
||||
36509 => 'MVM Net',
|
||||
3670 => 'Vodafone',
|
||||
);
|
||||
|
@@ -12,8 +12,9 @@
|
||||
|
||||
return array (
|
||||
37060 => 'Tele 2',
|
||||
37061 => 'Omnitel',
|
||||
37062 => 'Omnitel',
|
||||
37061 => 'Telia',
|
||||
37062 => 'Telia',
|
||||
37063 => 'BITĖ',
|
||||
37064 => 'BITĖ',
|
||||
370645 => 'Tele 2',
|
||||
370646 => 'Tele 2',
|
||||
@@ -21,25 +22,110 @@ return array (
|
||||
370648 => 'Tele 2',
|
||||
37065 => 'BITĖ',
|
||||
370660 => 'BITĖ',
|
||||
370662 => 'Omnitel',
|
||||
370661 => 'BITĖ',
|
||||
3706610 => 'Tele 2',
|
||||
370662 => 'Telia',
|
||||
3706630 => 'Telia',
|
||||
37066313 => 'BITĖ',
|
||||
37066314 => 'BITĖ',
|
||||
37066315 => 'BITĖ',
|
||||
37066316 => 'BITĖ',
|
||||
37066317 => 'BITĖ',
|
||||
37066318 => 'BITĖ',
|
||||
37066319 => 'BITĖ',
|
||||
37066320 => 'BITĖ',
|
||||
37066323 => 'BITĖ',
|
||||
3706650 => 'Telia',
|
||||
3706651 => 'Telia',
|
||||
37066522 => 'Telia',
|
||||
37066523 => 'Telia',
|
||||
37066524 => 'Telia',
|
||||
37066525 => 'Telia',
|
||||
37066526 => 'Telia',
|
||||
37066527 => 'Telia',
|
||||
37066528 => 'Telia',
|
||||
37066529 => 'Telia',
|
||||
3706653 => 'Telia',
|
||||
3706660 => 'BITĖ',
|
||||
3706661 => 'BITĖ',
|
||||
37066621 => 'Telia',
|
||||
37066622 => 'BITĖ',
|
||||
37066623 => 'BITĖ',
|
||||
37066624 => 'BITĖ',
|
||||
37066625 => 'BITĖ',
|
||||
37066626 => 'BITĖ',
|
||||
37066627 => 'BITĖ',
|
||||
37066628 => 'BITĖ',
|
||||
37066629 => 'BITĖ',
|
||||
3706663 => 'Telia',
|
||||
3706664 => 'Telia',
|
||||
3706665 => 'BITĖ',
|
||||
3706666 => 'Tele 2',
|
||||
3706667 => 'BITĖ',
|
||||
3706668 => 'BITĖ',
|
||||
3706669 => 'BITĖ',
|
||||
3706670 => 'BITĖ',
|
||||
37066711 => 'BITĖ',
|
||||
37066719 => 'BITĖ',
|
||||
37066728 => 'BITĖ',
|
||||
37066729 => 'BITĖ',
|
||||
3706676 => 'BITĖ',
|
||||
3706677 => 'BITĖ',
|
||||
3706678 => 'BITĖ',
|
||||
3706679 => 'BITĖ',
|
||||
3706680 => 'Tele 2',
|
||||
37066839 => 'Tele 2',
|
||||
37066840 => 'Tele 2',
|
||||
37066841 => 'Tele 2',
|
||||
37066842 => 'Tele 2',
|
||||
37066860 => 'Tele 2',
|
||||
37066861 => 'Tele 2',
|
||||
37066862 => 'Tele 2',
|
||||
37066863 => 'Tele 2',
|
||||
37066864 => 'Tele 2',
|
||||
37066865 => 'Tele 2',
|
||||
37066876 => 'BITĖ',
|
||||
37066877 => 'BITĖ',
|
||||
370669 => 'Telia',
|
||||
37067 => 'Tele 2',
|
||||
370680 => 'Omnitel',
|
||||
370680 => 'Telia',
|
||||
370681 => 'BITĖ',
|
||||
370682 => 'Omnitel',
|
||||
370682 => 'Telia',
|
||||
370683 => 'Tele 2',
|
||||
370684 => 'Tele 2',
|
||||
370685 => 'BITĖ',
|
||||
370686 => 'Omnitel',
|
||||
370687 => 'Omnitel',
|
||||
370688 => 'Omnitel',
|
||||
370686 => 'Telia',
|
||||
370687 => 'Telia',
|
||||
370688 => 'Telia',
|
||||
370689 => 'BITĖ',
|
||||
370690 => 'BITĖ',
|
||||
370692 => 'Omnitel',
|
||||
370693 => 'Omnitel',
|
||||
370694 => 'Omnitel',
|
||||
370695 => 'Omnitel',
|
||||
370696 => 'Omnitel',
|
||||
370697 => 'Omnitel',
|
||||
370698 => 'Omnitel',
|
||||
370691 => 'BITĖ',
|
||||
370692 => 'Telia',
|
||||
370693 => 'Telia',
|
||||
370694 => 'Telia',
|
||||
370695 => 'Telia',
|
||||
370696 => 'Telia',
|
||||
3706970 => 'Telia',
|
||||
3706971 => 'Telia',
|
||||
3706972 => 'Telia',
|
||||
3706973 => 'Telia',
|
||||
37069740 => 'Telia',
|
||||
37069741 => 'Telia',
|
||||
37069742 => 'BITĖ',
|
||||
37069743 => 'BITĖ',
|
||||
37069744 => 'Telia',
|
||||
37069747 => 'Telia',
|
||||
37069748 => 'Telia',
|
||||
37069749 => 'Telia',
|
||||
3706975 => 'Telia',
|
||||
37069760 => 'Telia',
|
||||
37069761 => 'Telia',
|
||||
37069762 => 'Telia',
|
||||
37069763 => 'Telia',
|
||||
37069764 => 'Telia',
|
||||
37069765 => 'Telia',
|
||||
3706977 => 'Telia',
|
||||
3706979 => 'Telia',
|
||||
370698 => 'Telia',
|
||||
370699 => 'BITĖ',
|
||||
);
|
||||
|
195
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/371.php
vendored
Normal file
195
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/371.php
vendored
Normal file
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
371200 => 'Tele2',
|
||||
3712010 => 'Bite Latvia',
|
||||
3712011 => 'Bite Latvia',
|
||||
3712012 => 'Bite Latvia',
|
||||
3712013 => 'Bite Latvia',
|
||||
3712014 => 'Bite Latvia',
|
||||
3712015 => 'Bite Latvia',
|
||||
3712016 => 'Bite Latvia',
|
||||
3712017 => 'Bite Latvia',
|
||||
3712019 => 'Bite Latvia',
|
||||
371202 => 'LMT',
|
||||
371203 => 'Tele2',
|
||||
371204 => 'Tele2',
|
||||
371205 => 'Tele2',
|
||||
371206 => 'Bite Latvia',
|
||||
371207 => 'Bite Latvia',
|
||||
3712080 => 'Bite Latvia',
|
||||
3712081 => 'Bite Latvia',
|
||||
3712082 => 'Bite Latvia',
|
||||
3712083 => 'Bite Latvia',
|
||||
3712084 => 'Bite Latvia',
|
||||
3712085 => 'Bite Latvia',
|
||||
3712086 => 'Bite Latvia',
|
||||
3712087 => 'Bite Latvia',
|
||||
3712088 => 'Bite Latvia',
|
||||
3712094 => 'Triatel',
|
||||
37121 => 'Bite Latvia',
|
||||
3712200 => 'LMT',
|
||||
3712201 => 'LMT',
|
||||
3712202 => 'LMT',
|
||||
3712203 => 'LMT',
|
||||
3712204 => 'LMT',
|
||||
3712205 => 'Bite Latvia',
|
||||
3712206 => 'Bite Latvia',
|
||||
3712207 => 'Bite Latvia',
|
||||
3712208 => 'Bite Latvia',
|
||||
3712209 => 'Bite Latvia',
|
||||
371221 => 'Bite Latvia',
|
||||
371222 => 'Bite Latvia',
|
||||
371223 => 'Tele2',
|
||||
3712239 => 'Bite Latvia',
|
||||
371224 => 'LMT',
|
||||
371225 => 'Bite Latvia',
|
||||
3712266 => 'LMT',
|
||||
3712267 => 'Tele2',
|
||||
3712272 => 'Bite Latvia',
|
||||
3712277 => 'LMT',
|
||||
3712280 => 'Bite Latvia',
|
||||
3712281 => 'Bite Latvia',
|
||||
3712282 => 'Bite Latvia',
|
||||
3712283 => 'Bite Latvia',
|
||||
3712284 => 'Bite Latvia',
|
||||
3712285 => 'UNISTARS',
|
||||
3712286 => 'Triatel',
|
||||
3712287 => 'Triatel',
|
||||
3712288 => 'LMT',
|
||||
3712299 => 'LMT',
|
||||
371230 => 'Bite Latvia',
|
||||
37123100 => 'Bite Latvia',
|
||||
3712311 => 'Bite Latvia',
|
||||
3712317 => 'Bite Latvia',
|
||||
3712320 => 'Bite Latvia',
|
||||
3712322 => 'Bite Latvia',
|
||||
37123230 => 'Tele2',
|
||||
37123232 => 'Tele2',
|
||||
37123233 => 'Tele2',
|
||||
37123238 => 'Tele2',
|
||||
3712327 => 'Bite Latvia',
|
||||
3712328 => 'LMT',
|
||||
3712330 => 'Bite Latvia',
|
||||
3712333 => 'Tele2',
|
||||
3712337 => 'Bite Latvia',
|
||||
37123400 => 'Bite Latvia',
|
||||
37123402 => 'Tele2',
|
||||
37123444 => 'Bite Latvia',
|
||||
37123456 => 'Tele2',
|
||||
3712347 => 'Bite Latvia',
|
||||
37123500 => 'Bite Latvia',
|
||||
3712355 => 'Bite Latvia',
|
||||
3712357 => 'Bite Latvia',
|
||||
3712366 => 'Bite Latvia',
|
||||
3712377 => 'Bite Latvia',
|
||||
3712388 => 'Bite Latvia',
|
||||
3712399 => 'Bite Latvia',
|
||||
3712400 => 'Bite Latvia',
|
||||
3712411 => 'Bite Latvia',
|
||||
3712420 => 'Bite Latvia',
|
||||
3712422 => 'Bite Latvia',
|
||||
3712424 => 'Bite Latvia',
|
||||
3712433 => 'Bite Latvia',
|
||||
3712440 => 'Bite Latvia',
|
||||
3712442 => 'Bite Latvia',
|
||||
3712444 => 'LMT',
|
||||
3712450 => 'Bite Latvia',
|
||||
3712455 => 'Bite Latvia',
|
||||
3712460 => 'Bite Latvia',
|
||||
3712466 => 'Bite Latvia',
|
||||
3712477 => 'Bite Latvia',
|
||||
3712478 => 'Tele2',
|
||||
3712479 => 'Tele2',
|
||||
371248 => 'Tele2',
|
||||
3712488 => 'Bite Latvia',
|
||||
371249 => 'Tele2',
|
||||
3712499 => 'Bite Latvia',
|
||||
3712500 => 'Bite Latvia',
|
||||
371251 => 'Bite Latvia',
|
||||
371252 => 'Tele2',
|
||||
371253 => 'Tele2',
|
||||
371254 => 'LMT',
|
||||
371255 => 'Bite Latvia',
|
||||
3712556 => 'LMT',
|
||||
3712557 => 'LMT',
|
||||
3712558 => 'LMT',
|
||||
3712559 => 'LMT',
|
||||
371256 => 'LMT',
|
||||
371257 => 'LMT',
|
||||
371258 => 'Triatel',
|
||||
3712585 => 'Bite Latvia',
|
||||
3712586 => 'Bite Latvia',
|
||||
3712587 => 'Bite Latvia',
|
||||
3712588 => 'Bite Latvia',
|
||||
371259 => 'Tele2',
|
||||
37126 => 'LMT',
|
||||
371260 => 'Tele2',
|
||||
371267 => 'Tele2',
|
||||
371268 => 'Tele2',
|
||||
371269 => 'Tele2',
|
||||
371270 => 'Tele2',
|
||||
371271 => 'Tele2',
|
||||
3712720 => 'Bite Latvia',
|
||||
3712721 => 'Bite Latvia',
|
||||
3712722 => 'Bite Latvia',
|
||||
3712723 => 'Bite Latvia',
|
||||
3712724 => 'Bite Latvia',
|
||||
3712725 => 'Bite Latvia',
|
||||
3712726 => 'Tele2',
|
||||
3712727 => 'Bite Latvia',
|
||||
3712729 => 'LMT',
|
||||
371273 => 'LMT',
|
||||
371274 => 'Bite Latvia',
|
||||
371275 => 'Bite Latvia',
|
||||
3712760 => 'Bite Latvia',
|
||||
3712761 => 'Bite Latvia',
|
||||
3712762 => 'Bite Latvia',
|
||||
3712763 => 'Bite Latvia',
|
||||
3712764 => 'Bite Latvia',
|
||||
3712765 => 'Bite Latvia',
|
||||
3712766 => 'Bite Latvia',
|
||||
3712767 => 'Bite Latvia',
|
||||
371277 => 'Bite Latvia',
|
||||
3712777 => 'LMT',
|
||||
371278 => 'LMT',
|
||||
3712790 => 'LMT',
|
||||
3712792 => 'Bite Latvia',
|
||||
3712799 => 'Bite Latvia',
|
||||
371280 => 'LMT',
|
||||
371281 => 'Tele2',
|
||||
371282 => 'Tele2',
|
||||
371283 => 'LMT',
|
||||
3712844 => 'Tele2',
|
||||
3712845 => 'Tele2',
|
||||
3712846 => 'Tele2',
|
||||
3712847 => 'Tele2',
|
||||
3712848 => 'Tele2',
|
||||
3712849 => 'LMT',
|
||||
3712855 => 'Bite Latvia',
|
||||
371286 => 'LMT',
|
||||
371287 => 'LMT',
|
||||
371288 => 'Tele2',
|
||||
371289 => 'Tele2',
|
||||
3712900 => 'Bite Latvia',
|
||||
3712902 => 'Bite Latvia',
|
||||
371291 => 'LMT',
|
||||
371292 => 'LMT',
|
||||
371293 => 'LMT',
|
||||
371294 => 'LMT',
|
||||
371295 => 'Tele2',
|
||||
371296 => 'Tele2',
|
||||
371297 => 'Tele2',
|
||||
371298 => 'Tele2',
|
||||
371299 => 'Tele2',
|
||||
);
|
@@ -11,20 +11,64 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
37250 => 'EMT',
|
||||
372519 => 'EMT',
|
||||
37252 => 'EMT',
|
||||
372530 => 'EMT',
|
||||
372533 => 'EMT',
|
||||
372534 => 'EMT',
|
||||
372536 => 'EMT',
|
||||
372537 => 'EMT',
|
||||
372538 => 'EMT',
|
||||
372539 => 'EMT',
|
||||
37250 => 'Telia Eesti AS',
|
||||
372519 => 'Telia Eesti AS',
|
||||
37252 => 'Telia Eesti AS',
|
||||
372530 => 'Telia Eesti AS',
|
||||
372533 => 'Telia Eesti AS',
|
||||
372534 => 'Telia Eesti AS',
|
||||
372536 => 'Telia Eesti AS',
|
||||
372537 => 'Telia Eesti AS',
|
||||
372538 => 'Telia Eesti AS',
|
||||
372539 => 'Telia Eesti AS',
|
||||
37254 => 'Telia Eesti AS',
|
||||
372545 => 'Elisa',
|
||||
3725461 => 'Elisa',
|
||||
3725462 => 'Elisa',
|
||||
3725463 => 'Elisa',
|
||||
37254664 => 'Elisa',
|
||||
37254665 => 'Elisa',
|
||||
37254667 => 'Elisa',
|
||||
37254668 => 'Elisa',
|
||||
37254669 => 'Elisa',
|
||||
37255 => 'Tele 2',
|
||||
37256 => 'Elisa',
|
||||
372577 => 'Elisa',
|
||||
37257 => 'Telia Eesti AS',
|
||||
37258 => 'Tele 2',
|
||||
372590 => 'EMT',
|
||||
372589 => 'Elisa',
|
||||
37259 => 'Telia Eesti AS',
|
||||
37259120 => 'Tele 2',
|
||||
37259121 => 'Tele 2',
|
||||
37259140 => 'Tele 2',
|
||||
372591410 => 'Tele 2',
|
||||
372591411 => 'Tele 2',
|
||||
372591412 => 'Tele 2',
|
||||
372591413 => 'Tele 2',
|
||||
37259144 => 'Tele 2',
|
||||
37281 => 'Telia Eesti AS',
|
||||
3728110 => 'Tele 2',
|
||||
3728111 => 'Elisa',
|
||||
37282 => 'Elisa',
|
||||
3728200 => 'Telia Eesti AS',
|
||||
3728203 => 'Telia Eesti AS',
|
||||
3728204 => 'Tele 2',
|
||||
37282056 => 'Tele 2',
|
||||
37282057 => 'Tele 2',
|
||||
37282058 => 'Tele 2',
|
||||
37282059 => 'Tele 2',
|
||||
3728206 => 'Tele 2',
|
||||
3728216 => 'Tele 2',
|
||||
3728217 => 'Tele 2',
|
||||
3728218 => 'Tele 2',
|
||||
37282199 => 'Tele 2',
|
||||
3728273 => 'Tele 2',
|
||||
3728282 => 'Telia Eesti AS',
|
||||
3728285 => 'Tele 2',
|
||||
3728286 => 'Tele 2',
|
||||
3728287 => 'Tele 2',
|
||||
37283 => 'Tele 2',
|
||||
37284 => 'Tele 2',
|
||||
37284510 => 'Telia Eesti AS',
|
||||
37284511 => 'Telia Eesti AS',
|
||||
37284512 => 'Telia Eesti AS',
|
||||
);
|
||||
|
@@ -17,25 +17,16 @@ return array (
|
||||
373611 => 'Orange',
|
||||
373620 => 'Orange',
|
||||
373621 => 'Orange',
|
||||
373671 => 'Moldtelecom',
|
||||
373672 => 'Moldtelecom',
|
||||
373673 => 'Moldtelecom',
|
||||
373674 => 'Moldtelecom',
|
||||
373675 => 'Moldtelecom',
|
||||
373676 => 'Moldtelecom',
|
||||
373677 => 'Moldtelecom',
|
||||
37367 => 'Moldtelecom',
|
||||
37368 => 'Orange',
|
||||
37369 => 'Orange',
|
||||
37376 => 'Moldcell',
|
||||
37377 => 'IDC',
|
||||
373780 => 'Moldcell',
|
||||
373781 => 'Moldcell',
|
||||
373782 => 'Moldcell',
|
||||
373783 => 'Moldcell',
|
||||
373784 => 'Moldcell',
|
||||
373785 => 'Moldcell',
|
||||
373786 => 'Moldcell',
|
||||
373787 => 'Moldcell',
|
||||
373788 => 'Moldcell',
|
||||
373774 => 'IDC',
|
||||
373775 => 'IDC',
|
||||
373776 => 'IDC',
|
||||
373777 => 'IDC',
|
||||
373778 => 'IDC',
|
||||
373779 => 'IDC',
|
||||
37378 => 'Moldcell',
|
||||
37379 => 'Moldcell',
|
||||
);
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
37433 => 'Beeline',
|
||||
37441 => 'Ucom',
|
||||
37443 => 'Beeline',
|
||||
37444 => 'Ucom',
|
||||
|
@@ -12,4 +12,6 @@
|
||||
|
||||
return array (
|
||||
3763 => 'Mobiland',
|
||||
3765 => 'Mobiland',
|
||||
3766 => 'Mobiland',
|
||||
);
|
||||
|
17
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/377.php
vendored
Normal file
17
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/377.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
3773 => 'Monaco Telecom',
|
||||
3774 => 'Monaco Telecom',
|
||||
3776 => 'Monaco Telecom',
|
||||
);
|
16
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/378.php
vendored
Normal file
16
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/378.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* This file has been @generated by a phing task by {@link GeneratePhonePrefixData}.
|
||||
* See [README.md](README.md#generating-data) for more information.
|
||||
*
|
||||
* Pull requests changing data in these files will not be accepted. See the
|
||||
* [FAQ in the README](README.md#problems-with-invalid-numbers] on how to make
|
||||
* metadata changes.
|
||||
*
|
||||
* Do not modify this file directly!
|
||||
*/
|
||||
|
||||
return array (
|
||||
37861 => 'TELENET',
|
||||
37866 => 'Telecom Italia San Marino',
|
||||
);
|
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
|
||||
return array (
|
||||
38039 => 'Golden Telecom',
|
||||
38039 => 'Kyivstar',
|
||||
38050 => 'Vodafone',
|
||||
38063 => 'lifecell',
|
||||
38066 => 'Vodafone',
|
||||
|
@@ -15,9 +15,10 @@ return array (
|
||||
38161 => 'VIP',
|
||||
38162 => 'Telenor',
|
||||
38163 => 'Telenor',
|
||||
38164 => 'mts',
|
||||
38165 => 'mts',
|
||||
38166 => 'mts',
|
||||
38164 => 'Telekom Srbija a.d.',
|
||||
38165 => 'Telekom Srbija a.d.',
|
||||
38166 => 'Telekom Srbija a.d.',
|
||||
381676 => 'GLOBALTEL',
|
||||
381677 => 'GLOBALTEL',
|
||||
381678 => 'Vectone Mobile',
|
||||
38168 => 'VIP',
|
||||
|
@@ -12,9 +12,6 @@
|
||||
|
||||
return array (
|
||||
38343 => 'IPKO',
|
||||
383432 => 'D3 Mobile',
|
||||
383433 => 'D3 Mobile',
|
||||
383434 => 'D3 Mobile',
|
||||
38344 => 'vala',
|
||||
383451 => 'vala',
|
||||
383452 => 'vala',
|
||||
@@ -26,11 +23,7 @@ return array (
|
||||
383458 => 'vala',
|
||||
383459 => 'vala',
|
||||
383461 => 'Z Mobile',
|
||||
3834710 => 'mts d.o.o.',
|
||||
3834711 => 'mts d.o.o.',
|
||||
3834712 => 'mts d.o.o.',
|
||||
3834713 => 'mts d.o.o.',
|
||||
3834714 => 'mts d.o.o.',
|
||||
3834715 => 'mts d.o.o.',
|
||||
38347 => 'mts d.o.o.',
|
||||
38348 => 'IPKO',
|
||||
38349 => 'IPKO',
|
||||
);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user