formatOutOfCountryCallingNumber() public method

If the number itself has a country calling code of zero or an otherwise invalid country calling code, then we return the number with no formatting applied.

Note this function takes care of the case for calling inside of NANPA and between Russia and Kazakhstan (who share the same country calling code). In those cases, no international prefix is used. For regions which have multiple international prefixes, the number in its INTERNATIONAL format will be returned instead.

public formatOutOfCountryCallingNumber ( PhoneNumber $number, string $regionCallingFrom ) : string
$number PhoneNumber the phone number to be formatted
$regionCallingFrom string the region where the call is being placed
return string the formatted phone number
Example #1
0
 public function testLongerNumber()
 {
     $number = "12345678901234567";
     $phoneNumber = $this->phoneUtil->parse($number, "DE");
     $this->assertEquals('+4912345678901234567', $this->phoneUtil->format($phoneNumber, PhoneNumberFormat::E164));
     $this->assertEquals('+49 12345678901234567', $this->phoneUtil->format($phoneNumber, PhoneNumberFormat::INTERNATIONAL));
     $this->assertEquals('12345678901234567', $this->phoneUtil->format($phoneNumber, PhoneNumberFormat::NATIONAL));
     $this->assertEquals('011 49 12345678901234567', $this->phoneUtil->formatOutOfCountryCallingNumber($phoneNumber, 'US'));
     $this->assertEquals('00 49 12345678901234567', $this->phoneUtil->formatOutOfCountryCallingNumber($phoneNumber, 'CH'));
 }
 public function testCountryWithNoNumberDesc()
 {
     // Andorra is a country where we don't have PhoneNumberDesc info in the metadata.
     $adNumber = new PhoneNumber();
     $adNumber->setCountryCode(376)->setNationalNumber(12345);
     $this->assertEquals("+376 12345", $this->phoneUtil->format($adNumber, PhoneNumberFormat::INTERNATIONAL));
     $this->assertEquals("+37612345", $this->phoneUtil->format($adNumber, PhoneNumberFormat::E164));
     $this->assertEquals("12345", $this->phoneUtil->format($adNumber, PhoneNumberFormat::NATIONAL));
     $this->assertEquals(PhoneNumberType::UNKNOWN, $this->phoneUtil->getNumberType($adNumber));
     $this->assertTrue($this->phoneUtil->isValidNumber($adNumber));
     // Test dialing a US number from within Andorra.
     $this->assertEquals("00 1 650 253 0000", $this->phoneUtil->formatOutOfCountryCallingNumber(self::$usNumber, RegionCode::AD));
 }
 public function testFormatOutOfCountryKeepingAlphaChars()
 {
     $alphaNumericNumber = new PhoneNumber();
     $alphaNumericNumber->setCountryCode(1)->setNationalNumber(8007493524)->setRawInput("1800 six-flag");
     $this->assertEquals("0011 1 800 SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     $alphaNumericNumber->setRawInput("1-800-SIX-flag");
     $this->assertEquals("0011 1 800-SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     $alphaNumericNumber->setRawInput("Call us from UK: 00 1 800 SIX-flag");
     $this->assertEquals("0011 1 800 SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     $alphaNumericNumber->setRawInput("800 SIX-flag");
     $this->assertEquals("0011 1 800 SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     // Formatting from within the NANPA region.
     $this->assertEquals("1 800 SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::US));
     $this->assertEquals("1 800 SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::BS));
     // Testing that if the raw input doesn't exist, it is formatted using
     // formatOutOfCountryCallingNumber.
     $alphaNumericNumber->clearRawInput();
     $this->assertEquals("00 1 800 749 3524", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::DE));
     // Testing AU alpha number formatted from Australia.
     $alphaNumericNumber->setCountryCode(61)->setNationalNumber(827493524)->setRawInput("+61 82749-FLAG");
     // This number should have the national prefix fixed.
     $this->assertEquals("082749-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     $alphaNumericNumber->setRawInput("082749-FLAG");
     $this->assertEquals("082749-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     $alphaNumericNumber->setNationalNumber(18007493524)->setRawInput("1-800-SIX-flag");
     // This number should not have the national prefix prefixed, in accordance with the override for
     // this specific formatting rule.
     $this->assertEquals("1-800-SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AU));
     // The metadata should not be permanently changed, since we copied it before modifying patterns.
     // Here we check this.
     $alphaNumericNumber->setNationalNumber(1800749352);
     $this->assertEquals("1800 749 352", $this->phoneUtil->formatOutOfCountryCallingNumber($alphaNumericNumber, RegionCode::AU));
     // Testing a region with multiple international prefixes.
     $this->assertEquals("+61 1-800-SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::SG));
     // Testing the case of calling from a non-supported region.
     $this->assertEquals("+61 1-800-SIX-FLAG", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AQ));
     // Testing the case with an invalid country calling code.
     $alphaNumericNumber->setCountryCode(0)->setNationalNumber(18007493524)->setRawInput("1-800-SIX-flag");
     // Uses the raw input only.
     $this->assertEquals("1-800-SIX-flag", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::DE));
     // Testing the case of an invalid alpha number.
     $alphaNumericNumber->setCountryCode(1)->setNationalNumber(80749)->setRawInput("180-SIX");
     // No country-code stripping can be done.
     $this->assertEquals("00 1 180-SIX", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::DE));
     // Testing the case of calling from a non-supported region.
     $alphaNumericNumber->setCountryCode(1)->setNationalNumber(80749)->setRawInput("180-SIX");
     // No country-code stripping can be done since the number is invalid.
     $this->assertEquals("+1 180-SIX", $this->phoneUtil->formatOutOfCountryKeepingAlphaChars($alphaNumericNumber, RegionCode::AQ));
 }
Example #4
0
 /**
  * @param string $country
  *
  * @return string
  */
 public function callFrom(string $country) : string
 {
     return $this->util->formatOutOfCountryCallingNumber($this->number, $country);
 }
Example #5
0
 /**
  * Getter for the outside format.
  *
  * @access protected
  * @return string
  */
 protected function getOutsideFormat()
 {
     return $this->phoneUtil->formatOutOfCountryCallingNumber($this->parsedResult, $this->getCountryCodeISO3166() === "NL" ? "US" : "NL");
 }