updated-packages

This commit is contained in:
RafficMohammed
2023-01-08 00:13:22 +05:30
parent 3ff7df7487
commit da241bacb6
12659 changed files with 563377 additions and 510538 deletions

View File

@@ -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,
);
}

View File

@@ -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;

View File

@@ -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',

View File

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

View File

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

View File

@@ -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]))
);
}

View File

@@ -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)) {

View File

@@ -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;
}

View File

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

View File

@@ -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;

View File

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

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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.
*/

View File

@@ -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;
}

View File

@@ -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';

View File

@@ -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);

View File

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

View File

@@ -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,

View File

@@ -12,6 +12,6 @@
return array (
9655 => 'فيفا',
9656 => 'الوطنية',
9656 => 'أوريدو',
9659 => 'زين',
);

View File

@@ -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',

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -13,6 +13,5 @@
return array (
2135 => 'Ooredoo',
2136 => 'Mobilis',
21377 => 'Djezzy',
21379 => 'Djezzy',
2137 => 'Djezzy',
);

View File

@@ -19,6 +19,7 @@ return array (
21644 => 'Tunisie Telecom',
21645 => 'Watany Ettisalat',
21646 => 'Ooredoo',
21647 => 'Tunisie Telecom',
2165 => 'Orange',
2169 => 'Tunisie Telecom',
);

View 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',
);

View File

@@ -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',

View File

@@ -13,6 +13,8 @@
return array (
22170 => 'Expresso',
22172 => 'HAYO',
22175 => 'Promobile',
221757 => 'Origines',
22176 => 'Tigo',
22177 => 'Orange',
22178 => 'Orange',

View File

@@ -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',
);

View File

@@ -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',

View File

@@ -12,6 +12,7 @@
return array (
22460 => 'Sotelgui',
22461 => 'Orange',
22462 => 'Orange',
22463 => 'Intercel',
22465 => 'Cellcom',

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',

View File

@@ -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',

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -13,5 +13,5 @@
return array (
2356 => 'Airtel',
2357 => 'Sotel',
2359 => 'Millicom',
2359 => 'Tigo',
);

View File

@@ -11,8 +11,9 @@
*/
return array (
23670 => 'TC',
23670 => 'A-Cell',
23672 => 'Orange',
23675 => 'CTP',
23674 => 'Orange',
23675 => 'Telecel',
23677 => 'Nationlink',
);

View File

@@ -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',
);

View File

@@ -11,10 +11,7 @@
*/
return array (
23833 => 'T+',
23836 => 'CVMOVEL',
23843 => 'T+',
23846 => 'CVMOVEL',
23851 => 'T+',
23852 => 'T+',
23853 => 'T+',

View File

@@ -12,6 +12,5 @@
return array (
2402 => 'GETESA',
240550 => 'Muni',
240551 => 'HiTS',
2405 => 'Muni',
);

View File

@@ -27,5 +27,6 @@ return array (
2414 => 'Airtel',
2415 => 'Moov',
2416 => 'Libertis',
24165 => 'Moov',
2417 => 'Airtel',
);

View File

@@ -12,8 +12,8 @@
return array (
24201 => 'Equateur Telecom',
24202 => 'Congo telecom',
24204 => 'Warid',
24205 => 'Celtel',
24205 => 'Airtel',
24206 => 'MTN',
2428001 => 'Hightech Pro',
);

View File

@@ -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',
);

View File

@@ -15,5 +15,6 @@ return array (
24492 => 'UNITEL',
24493 => 'UNITEL',
24494 => 'UNITEL',
24495 => 'Africell Angola',
24499 => 'Movicel',
);

View File

@@ -11,5 +11,5 @@
*/
return array (
4631 => 'Göteborg',
24638 => 'Sure Ltd',
);

View 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',
);

View File

@@ -11,6 +11,8 @@
*/
return array (
24821 => 'Intelvision',
24822 => 'Intelvision',
24825 => 'CWS',
24826 => 'CWS',
24827 => 'Airtel',

View File

@@ -14,4 +14,5 @@ return array (
25072 => 'TIGO',
25073 => 'Airtel',
25078 => 'MTN',
25079 => 'MTN',
);

View File

@@ -11,5 +11,6 @@
*/
return array (
2517 => 'Safaricom',
2519 => 'Ethio Telecom',
);

View File

@@ -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',

View File

@@ -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',

View File

@@ -11,9 +11,8 @@
*/
return array (
25561 => 'Viettel',
25562 => 'Viettel',
25563 => 'MTC',
25564 => 'Cootel',
25565 => 'tiGO',
25566 => 'SMILE',
25567 => 'tiGO',

View File

@@ -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',

View File

@@ -12,7 +12,6 @@
return array (
25729 => 'Leo',
2573 => 'Viettel',
2576 => 'Viettel',
25771 => 'Leo',
25772 => 'Leo',

View File

@@ -17,4 +17,5 @@ return array (
25885 => 'Vodacom',
25886 => 'Movitel',
25887 => 'Movitel',
25889 => 'GMPCS',
);

View File

@@ -11,8 +11,11 @@
*/
return array (
2607 => 'MTN',
26075 => 'ZAMTEL',
26076 => 'MTN',
26077 => 'Airtel',
26095 => 'ZAMTEL',
26096 => 'MTN',
26097 => 'Airtel',
26098 => 'Beeline Telecoms',
);

View File

@@ -14,5 +14,6 @@ return array (
26132 => 'Orange',
26133 => 'Airtel',
26134 => 'Telma',
26138 => 'Telma',
26139 => 'Blueline',
);

View File

@@ -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',
);

View File

@@ -11,6 +11,9 @@
*/
return array (
26511 => 'Malawi Telecom-munications Ltd (MTL)',
2653 => 'TNM',
2657 => 'Globally Advanced Integrated Networks Ltd',
2658 => 'TNM',
2659 => 'Airtel',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -14,5 +14,5 @@ return array (
26876 => 'Swazi MTN',
26877 => 'SPTC',
26878 => 'Swazi MTN',
26879 => 'Swazi MTN',
26879 => 'Swazi Mobile Ltd',
);

View File

@@ -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',
);

View 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',
);

View File

@@ -11,11 +11,6 @@
*/
return array (
822 => 'Сеул',
8232 => 'Инчон',
8251 => 'Бусан',
8252 => 'Улсан',
8253 => 'Тегу',
8262 => 'Квангџу',
8264 => 'Чеџу',
29117 => 'EriTel',
2917 => 'EriTel',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',

View File

@@ -11,6 +11,11 @@
*/
return array (
3505 => 'GibTel',
3506 => 'Limba',
35051 => 'Gibfibre',
35052 => 'Gibfibre',
35054 => 'GibTel',
35056 => 'GibTel',
35057 => 'GibTel',
35058 => 'GibTel',
3506 => 'GibTel',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -11,6 +11,7 @@
*/
return array (
35791 => 'Cytamobile-Vodafone',
35794 => 'Lemontel',
35795 => 'PrimeTel',
35796 => 'MTN',

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -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Ė',
);

View 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',
);

View File

@@ -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',
);

View File

@@ -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',
);

View File

@@ -11,6 +11,7 @@
*/
return array (
37433 => 'Beeline',
37441 => 'Ucom',
37443 => 'Beeline',
37444 => 'Ucom',

View File

@@ -12,4 +12,6 @@
return array (
3763 => 'Mobiland',
3765 => 'Mobiland',
3766 => 'Mobiland',
);

View 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',
);

View 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',
);

View File

@@ -11,7 +11,7 @@
*/
return array (
38039 => 'Golden Telecom',
38039 => 'Kyivstar',
38050 => 'Vodafone',
38063 => 'lifecell',
38066 => 'Vodafone',

View File

@@ -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',

View File

@@ -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',
);

View File

@@ -12,11 +12,14 @@
return array (
38590 => 'Tele2',
38591 => 'Vip',
38592 => 'Vip',
38591 => 'A1 Telekom',
38592 => 'A1 Telekom',
38595 => 'Tele2',
385970 => 'Hrvatski Telekom',
385975 => 'Telefocus',
3859751 => 'Telefocus',
3859757 => 'Mobile One',
38597596 => 'Altavox',
38597597 => 'INNOVAC',
385976 => 'Hrvatski Telekom',
385977 => 'Hrvatski Telekom',
385979 => 'Hrvatski Telekom',

View File

@@ -20,13 +20,12 @@ return array (
38651 => 'Telekom Slovenije',
38664 => 'T-2',
386651 => 'SŽ - Infrastruktura',
3866555 => 'Telekom Slovenije',
3866560 => 'Telekom Slovenije',
3866570 => 'Novatel',
386681 => 'A1',
386686 => 'A1',
386689 => 'A1',
38669 => 'HoT',
386655 => 'Telekom Slovenije',
386656 => 'SoftNet',
386657 => 'Novatel',
38668 => 'A1',
38669 => 'A1',
3866910 => 'Compatel',
38670 => 'Telemach',
38671 => 'Telekom Slovenije',
38671 => 'Telemach',
);

View File

@@ -11,69 +11,19 @@
*/
return array (
389701 => 'T-Mobile',
389702 => 'T-Mobile',
389703 => 'T-Mobile',
389704 => 'T-Mobile',
389705 => 'T-Mobile',
389706 => 'T-Mobile',
389707 => 'T-Mobile',
389708 => 'T-Mobile',
389709 => 'T-Mobile',
389711 => 'T-Mobile',
389712 => 'T-Mobile',
389713 => 'T-Mobile',
389714 => 'T-Mobile',
389715 => 'T-Mobile',
389716 => 'T-Mobile',
389717 => 'T-Mobile',
389718 => 'T-Mobile',
389719 => 'T-Mobile',
389721 => 'T-Mobile',
389722 => 'T-Mobile',
389723 => 'T-Mobile',
389724 => 'T-Mobile',
389725 => 'T-Mobile',
389726 => 'T-Mobile',
389727 => 'T-Mobile',
389729 => 'T-Mobile',
389732 => 'Vip',
389733 => 'Telekom',
389734 => 'Vip',
38974 => 'Mobik',
389752 => 'Vip',
389753 => 'Vip',
389754 => 'Vip',
389755 => 'Vip',
389756 => 'Vip',
389757 => 'Vip',
389758 => 'Vip',
389759 => 'Vip',
389762 => 'Vip',
389763 => 'Vip',
389764 => 'Vip',
389765 => 'Vip',
389766 => 'Vip',
389767 => 'Vip',
389768 => 'Vip',
389769 => 'Vip',
389771 => 'Vip',
389772 => 'Vip',
389773 => 'Vip',
389774 => 'Vip',
389775 => 'Vip',
389776 => 'Vip',
389777 => 'Vip',
389778 => 'Vip',
389779 => 'Vip',
389781 => 'Vip',
389782 => 'Vip',
389783 => 'Vip',
389784 => 'Vip',
389785 => 'Vip',
389786 => 'Vip',
389787 => 'Vip',
389788 => 'Vip',
389789 => 'Vip',
38979 => 'Lycamobile',
3897 => 'A1',
38970 => 'T-Mobile',
38971 => 'T-Mobile',
38972 => 'T-Mobile',
3897370 => 'T-Mobile',
3897371 => 'T-Mobile',
389742 => 'T-Mobile',
3897421 => 'Mobik',
389746 => 'T-Mobile',
3897470 => 'T-Mobile',
3897471 => 'T-Mobile',
3897474 => 'T-Mobile',
38974774 => 'Telekabel',
3897970 => 'T-Mobile',
3897971 => 'T-Mobile',
);

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