Gets the national significant number of the a phone number. Note a national significant number
doesn't contain a national prefix or any formatting.
public getNationalSignificantNumber ( |
||
$number | the phone number for which the national significant number is needed | |
리턴 | string | the national significant number of the PhoneNumber object passed in |
/** * Returns the description of the geographical area the {@code number} corresponds to. This method * distinguishes the case of an invalid prefix and a prefix for which the name is not available in * the current language. If the description is not available in the current language an empty * string is returned. If no description was found for the provided number, null is returned. * * @internal param \libphonenumber\PhoneNumber $number the phone number to look up * @param \libphonenumber\PhoneNumber $phoneNumber * @return string|null bla the description of the geographical area */ public function lookup(PhoneNumber $phoneNumber) { if (count($this->areaCodeMapStorage) == 0) { return null; } $phonePrefix = $phoneNumber->getCountryCode() . $this->phoneUtil->getNationalSignificantNumber($phoneNumber); while (strlen($phonePrefix) > 0) { if (array_key_exists($phonePrefix, $this->areaCodeMapStorage)) { return $this->areaCodeMapStorage[$phonePrefix]; } $phonePrefix = substr($phonePrefix, 0, -1); } return null; }
/** * Returns a text description for the given phone number, in the language provided. The * description might consist of the name of the country where the phone number is from, or the * name of the geographical area the phone number is from if more detailed information is * available. * * <p>This method assumes the validity of the number passed in has already been checked, and that * the number is suitable for geocoding. We consider fixed-line and mobile numbers possible * candidates for geocoding. * * <p>If $userRegion is set, we also consider the region of the user. If the phone number is from * the same region as the user, only a lower-level description will be returned, if one exists. * Otherwise, the phone number's region will be returned, with optionally some more detailed * information. * * <p>For example, for a user from the region "US" (United States), we would show "Mountain View, * CA" for a particular number, omitting the United States from the description. For a user from * the United Kingdom (region "GB"), for the same number we may show "Mountain View, CA, United * States" or even just "United States". * * @param PhoneNumber $number a valid phone number for which we want to get a text description * @param string $locale the language code for which the description should be written * @param string $userRegion the region code for a given user. This region will be omitted from the * description if the phone number comes from this region. It is a two-letter uppercase ISO * country code as defined by ISO 3166-1. * @return string a text description for the given language code for the given phone number */ public function getDescriptionForValidNumber(PhoneNumber $number, $locale, $userRegion = null) { // If the user region matches the number's region, then we just show the lower-level // description, if one exists - if no description exists, we will show the region(country) name // for the number. $regionCode = $this->phoneUtil->getRegionCodeForNumber($number); if ($userRegion == null || $userRegion == $regionCode) { $languageStr = Locale::getPrimaryLanguage($locale); $scriptStr = ""; $regionStr = Locale::getRegion($locale); $mobileToken = PhoneNumberUtil::getCountryMobileToken($number->getCountryCode()); $nationalNumber = $this->phoneUtil->getNationalSignificantNumber($number); if ($mobileToken !== "" && !strncmp($nationalNumber, $mobileToken, strlen($mobileToken))) { // In some countries, eg. Argentina, mobile numbers have a mobile token before the national // destination code, this should be removed before geocoding. $nationalNumber = substr($nationalNumber, strlen($mobileToken)); $region = $this->phoneUtil->getRegionCodeForCountryCode($number->getCountryCode()); try { $copiedNumber = $this->phoneUtil->parse($nationalNumber, $region); } catch (NumberParseException $e) { // If this happens, just reuse what we had. $copiedNumber = $number; } $areaDescription = $this->prefixFileReader->getDescriptionForNumber($copiedNumber, $languageStr, $scriptStr, $regionStr); } else { $areaDescription = $this->prefixFileReader->getDescriptionForNumber($number, $languageStr, $scriptStr, $regionStr); } return strlen($areaDescription) > 0 ? $areaDescription : $this->getCountryNameForNumber($number, $locale); } // Otherwise, we just show the region(country) name for now. return $this->getRegionDisplayName($regionCode, $locale); // TODO: Concatenate the lower-level and country-name information in an appropriate // way for each language. }
public function testGetNationalSignificantNumber() { $this->assertEquals("6502530000", $this->phoneUtil->getNationalSignificantNumber(self::$usNumber)); // An Italian mobile number. $this->assertEquals("345678901", $this->phoneUtil->getNationalSignificantNumber(self::$itMobile)); // An Italian fixed line number. $this->assertEquals("0236618300", $this->phoneUtil->getNationalSignificantNumber(self::$itNumber)); $this->assertEquals("12345678", $this->phoneUtil->getNationalSignificantNumber(self::$internationalTollFree)); }
/** * Returns the description of the {@code $number}. This method distinguishes the case of an invalid * prefix and a prefix for which the name is not available in the current language. If the * description is not available in the current language an empty string is returned. If no * description was found for the provided number, null is returned. * * @param PhoneNumber $number The phone number to look up * @return string|null the description of the number */ public function lookup(PhoneNumber $number) { $phonePrefix = $number->getCountryCode() . $this->phoneUtil->getNationalSignificantNumber($number); return $this->lookupKey($phonePrefix); }