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 the number contains a leading zero and this is unexpected for this
country, or we don't have a formatting pattern for the number, the method returns the raw input
when it is available.
Note this method guarantees no digit will be inserted, removed or modified as a result of
formatting.
public formatInOriginalFormat ( |
||
$number | the phone number that needs to be formatted in its original number format | |
$regionCallingFrom | string | the region whose IDD needs to be prefixed if the original number has one |
return | string | the formatted phone number in its original number format |
public function testFormatInOriginalFormat() { $number1 = $this->phoneUtil->parseAndKeepRawInput("+442087654321", RegionCode::GB); $this->assertEquals("+44 20 8765 4321", $this->phoneUtil->formatInOriginalFormat($number1, RegionCode::GB)); $number2 = $this->phoneUtil->parseAndKeepRawInput("02087654321", RegionCode::GB); $this->assertEquals("(020) 8765 4321", $this->phoneUtil->formatInOriginalFormat($number2, RegionCode::GB)); $number3 = $this->phoneUtil->parseAndKeepRawInput("011442087654321", RegionCode::US); $this->assertEquals("011 44 20 8765 4321", $this->phoneUtil->formatInOriginalFormat($number3, RegionCode::US)); $number4 = $this->phoneUtil->parseAndKeepRawInput("442087654321", RegionCode::GB); $this->assertEquals("44 20 8765 4321", $this->phoneUtil->formatInOriginalFormat($number4, RegionCode::GB)); $number5 = $this->phoneUtil->parse("+442087654321", RegionCode::GB); $this->assertEquals("(020) 8765 4321", $this->phoneUtil->formatInOriginalFormat($number5, RegionCode::GB)); // Invalid numbers that we have a formatting pattern for should be formatted properly. Note area // codes starting with 7 are intentionally excluded in the test metadata for testing purposes. $number6 = $this->phoneUtil->parseAndKeepRawInput("7345678901", RegionCode::US); $this->assertEquals("734 567 8901", $this->phoneUtil->formatInOriginalFormat($number6, RegionCode::US)); // US is not a leading zero country, and the presence of the leading zero leads us to format the // number using raw_input. $number7 = $this->phoneUtil->parseAndKeepRawInput("0734567 8901", RegionCode::US); $this->assertEquals("0734567 8901", $this->phoneUtil->formatInOriginalFormat($number7, RegionCode::US)); // This number is valid, but we don't have a formatting pattern for it. Fall back to the raw // input. $number8 = $this->phoneUtil->parseAndKeepRawInput("02-4567-8900", RegionCode::KR); $this->assertEquals("02-4567-8900", $this->phoneUtil->formatInOriginalFormat($number8, RegionCode::KR)); $number9 = $this->phoneUtil->parseAndKeepRawInput("01180012345678", RegionCode::US); $this->assertEquals("011 800 1234 5678", $this->phoneUtil->formatInOriginalFormat($number9, RegionCode::US)); $number10 = $this->phoneUtil->parseAndKeepRawInput("+80012345678", RegionCode::KR); $this->assertEquals("+800 1234 5678", $this->phoneUtil->formatInOriginalFormat($number10, RegionCode::KR)); // US local numbers are formatted correctly, as we have formatting patterns for them. $localNumberUS = $this->phoneUtil->parseAndKeepRawInput("2530000", RegionCode::US); $this->assertEquals("253 0000", $this->phoneUtil->formatInOriginalFormat($localNumberUS, RegionCode::US)); $numberWithNationalPrefixUS = $this->phoneUtil->parseAndKeepRawInput("18003456789", RegionCode::US); $this->assertEquals("1 800 345 6789", $this->phoneUtil->formatInOriginalFormat($numberWithNationalPrefixUS, RegionCode::US)); $numberWithoutNationalPrefixGB = $this->phoneUtil->parseAndKeepRawInput("2087654321", RegionCode::GB); $this->assertEquals("20 8765 4321", $this->phoneUtil->formatInOriginalFormat($numberWithoutNationalPrefixGB, RegionCode::GB)); // Make sure no metadata is modified as a result of the previous function call. $this->assertEquals("(020) 8765 4321", $this->phoneUtil->formatInOriginalFormat($number5, RegionCode::GB)); $numberWithNationalPrefixMX = $this->phoneUtil->parseAndKeepRawInput("013312345678", RegionCode::MX); $this->assertEquals("01 33 1234 5678", $this->phoneUtil->formatInOriginalFormat($numberWithNationalPrefixMX, RegionCode::MX)); $numberWithoutNationalPrefixMX = $this->phoneUtil->parseAndKeepRawInput("3312345678", RegionCode::MX); $this->assertEquals("33 1234 5678", $this->phoneUtil->formatInOriginalFormat($numberWithoutNationalPrefixMX, RegionCode::MX)); $italianFixedLineNumber = $this->phoneUtil->parseAndKeepRawInput("0212345678", RegionCode::IT); $this->assertEquals("02 1234 5678", $this->phoneUtil->formatInOriginalFormat($italianFixedLineNumber, RegionCode::IT)); $numberWithNationalPrefixJP = $this->phoneUtil->parseAndKeepRawInput("00777012", RegionCode::JP); $this->assertEquals("0077-7012", $this->phoneUtil->formatInOriginalFormat($numberWithNationalPrefixJP, RegionCode::JP)); $numberWithoutNationalPrefixJP = $this->phoneUtil->parseAndKeepRawInput("0777012", RegionCode::JP); $this->assertEquals("0777012", $this->phoneUtil->formatInOriginalFormat($numberWithoutNationalPrefixJP, RegionCode::JP)); $numberWithCarrierCodeBR = $this->phoneUtil->parseAndKeepRawInput("012 3121286979", RegionCode::BR); $this->assertEquals("012 3121286979", $this->phoneUtil->formatInOriginalFormat($numberWithCarrierCodeBR, RegionCode::BR)); // The default national prefix used in this case is 045. When a number with national prefix 044 // is entered, we return the raw input as we don't want to change the number entered. $numberWithNationalPrefixMX1 = $this->phoneUtil->parseAndKeepRawInput("044(33)1234-5678", RegionCode::MX); $this->assertEquals("044(33)1234-5678", $this->phoneUtil->formatInOriginalFormat($numberWithNationalPrefixMX1, RegionCode::MX)); $numberWithNationalPrefixMX2 = $this->phoneUtil->parseAndKeepRawInput("045(33)1234-5678", RegionCode::MX); $this->assertEquals("045 33 1234 5678", $this->phoneUtil->formatInOriginalFormat($numberWithNationalPrefixMX2, RegionCode::MX)); // The default international prefix used in this case is 0011. When a number with international // prefix 0012 is entered, we return the raw input as we don't want to change the number // entered. $outOfCountryNumberFromAU1 = $this->phoneUtil->parseAndKeepRawInput("0012 16502530000", RegionCode::AU); $this->assertEquals("0012 16502530000", $this->phoneUtil->formatInOriginalFormat($outOfCountryNumberFromAU1, RegionCode::AU)); $outOfCountryNumberFromAU2 = $this->phoneUtil->parseAndKeepRawInput("0011 16502530000", RegionCode::AU); $this->assertEquals("0011 1 650 253 0000", $this->phoneUtil->formatInOriginalFormat($outOfCountryNumberFromAU2, RegionCode::AU)); // Test the star sign is not removed from or added to the original input by this method. $starNumber = $this->phoneUtil->parseAndKeepRawInput("*1234", RegionCode::JP); $this->assertEquals("*1234", $this->phoneUtil->formatInOriginalFormat($starNumber, RegionCode::JP)); $numberWithoutStar = $this->phoneUtil->parseAndKeepRawInput("1234", RegionCode::JP); $this->assertEquals("1234", $this->phoneUtil->formatInOriginalFormat($numberWithoutStar, RegionCode::JP)); // Test an invalid national number without raw input is just formatted as the national number. $this->assertEquals("650253000", $this->phoneUtil->formatInOriginalFormat(self::$usShortByOneNumber, RegionCode::US)); }