Returns the metadata for the given region code or {@code null} if the region code is invalid
or unknown.
public getMetadataForRegion ( string $regionCode ) : |
||
$regionCode | string | |
return |
public function testGetInstanceLoadARMetadata() { $metadata = $this->phoneUtil->getMetadataForRegion(RegionCode::AR); $this->assertEquals("AR", $metadata->getId()); $this->assertEquals(54, $metadata->getCountryCode()); $this->assertEquals("00", $metadata->getInternationalPrefix()); $this->assertEquals("0", $metadata->getNationalPrefix()); $this->assertEquals("0(?:(11|343|3715)15)?", $metadata->getNationalPrefixForParsing()); $this->assertEquals("9\$1", $metadata->getNationalPrefixTransformRule()); $this->assertEquals("\$2 15 \$3-\$4", $metadata->getNumberFormat(2)->getFormat()); $this->assertEquals("(9)(\\d{4})(\\d{2})(\\d{4})", $metadata->getNumberFormat(3)->getPattern()); $this->assertEquals("(9)(\\d{4})(\\d{2})(\\d{4})", $metadata->getIntlNumberFormat(3)->getPattern()); $this->assertEquals("\$1 \$2 \$3 \$4", $metadata->getIntlNumberFormat(3)->getFormat()); }
/** * @dataProvider regionList */ public function testCanBeInternationallyDialled($regionCode) { $exampleNumber = null; /** @var \libphonenumber\PhoneNumberDesc $desc */ $desc = $this->phoneNumberUtil->getMetadataForRegion($regionCode)->getNoInternationalDialling(); try { if ($desc->hasExampleNumber()) { $exampleNumber = $this->phoneNumberUtil->parse($desc->getExampleNumber(), $regionCode); } } catch (NumberParseException $e) { } if ($exampleNumber !== null && $this->phoneNumberUtil->canBeInternationallyDialled($exampleNumber)) { $this->fail("Number {$exampleNumber} should not be internationally diallable"); } }
public function testMaybeExtractCountryCode() { $number = new PhoneNumber(); $metadata = $this->phoneUtil->getMetadataForRegion(RegionCode::US); // Note that for the US, the IDD is 011. try { $phoneNumber = "011112-3456789"; $strippedNumber = "123456789"; $countryCallingCode = 1; $numberToFill = ""; $this->assertEquals($countryCallingCode, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Did not extract country calling code " . $countryCallingCode . " correctly."); $this->assertEquals(CountryCodeSource::FROM_NUMBER_WITH_IDD, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); // Should strip and normalize national significant number. $this->assertEquals($strippedNumber, $numberToFill, "Did not strip off the country calling code correctly."); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "+6423456789"; $countryCallingCode = 64; $numberToFill = ""; $this->assertEquals($countryCallingCode, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Did not extract country calling code " . $countryCallingCode . " correctly."); $this->assertEquals(CountryCodeSource::FROM_NUMBER_WITH_PLUS_SIGN, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "+80012345678"; $countryCallingCode = 800; $numberToFill = ""; $this->assertEquals($countryCallingCode, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Did not extract country calling code " . $countryCallingCode . " correctly."); $this->assertEquals(CountryCodeSource::FROM_NUMBER_WITH_PLUS_SIGN, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "2345-6789"; $numberToFill = ""; $this->assertEquals(0, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Should not have extracted a country calling code - no international prefix present."); $this->assertEquals(CountryCodeSource::FROM_DEFAULT_COUNTRY, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "0119991123456789"; $numberToFill = ""; $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number); $this->fail("Should have thrown an exception, no valid country calling code present."); } catch (NumberParseException $e) { // Expected. $this->assertEquals(NumberParseException::INVALID_COUNTRY_CODE, $e->getErrorType(), "Wrong error type stored in exception."); } $number->clear(); try { $phoneNumber = "(1 610) 619 4466"; $countryCallingCode = 1; $numberToFill = ""; $this->assertEquals($countryCallingCode, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Should have extracted the country calling code of the region passed in"); $this->assertEquals(CountryCodeSource::FROM_NUMBER_WITHOUT_PLUS_SIGN, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "(1 610) 619 4466"; $countryCallingCode = 1; $numberToFill = ""; $this->assertEquals($countryCallingCode, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, false, $number), "Should have extracted the country calling code of the region passed in"); $this->assertFalse($number->hasCountryCodeSource(), "Should not contain CountryCodeSource"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "(1 610) 619 446"; $numberToFill = ""; $this->assertEquals(0, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, false, $number), "Should not have extracted a country calling code - invalid number after extraction of uncertain country calling code."); $this->assertFalse($number->hasCountryCodeSource(), "Should not contain CountryCodeSource"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } $number->clear(); try { $phoneNumber = "(1 610) 619"; $numberToFill = ""; $this->assertEquals(0, $this->phoneUtil->maybeExtractCountryCode($phoneNumber, $metadata, $numberToFill, true, $number), "Should not have extracted a country calling code - too short number both before and after extraction of uncertain country calling code."); $this->assertEquals(CountryCodeSource::FROM_DEFAULT_COUNTRY, $number->getCountryCodeSource(), "Did not figure out CountryCodeSource correctly"); } catch (NumberParseException $e) { $this->fail("Should not have thrown an exception: " . $e->getMessage()); } }