getRawInput() 공개 메소드

Returns the raw input of this phone number.
public getRawInput ( ) : string | null
리턴 string | null The raw input, or null if not set.
 private function parse()
 {
     if ($this->phoneNumberProto) {
         // from phoneNumberProto
         $this->country_code = $this->phoneNumberProto->getCountryCode();
         $this->country_code_plus_sign = "+" . $this->country_code;
         $this->national_number = $this->phoneNumberProto->getNationalNumber();
         $this->extension = $this->phoneNumberProto->getExtension();
         $this->country_code_source = $this->phoneNumberProto->getCountryCodeSource();
         if (isset($this->countryCodeSourcesText[$this->country_code_source])) {
             $this->country_code_source_text = $this->countryCodeSourcesText[$this->country_code_source];
         }
         $this->raw_input = $this->phoneNumberProto->getRawInput();
         $this->preferred_domestic_carrier_code = $this->phoneNumberProto->getPreferredDomesticCarrierCode();
         // from validation
         $this->is_possible_number = $this->phoneUtil->isPossibleNumber($this->phoneNumberProto);
         $this->is_valid_number = $this->phoneUtil->isValidNumber($this->phoneNumberProto);
         $this->region_code_for_number = $this->phoneUtil->getRegionCodeForNumber($this->phoneNumberProto);
         $this->number_type = $this->phoneUtil->getNumberType($this->phoneNumberProto);
         $this->number_type_text = $this->phoneUtil->getNumberType($this->phoneNumberProto);
         if (isset($this->phoneNumberTypesText[$this->number_type])) {
             $this->number_type_text = $this->phoneNumberTypesText[$this->number_type];
         } else {
             $this->number_type_text = "OTHER";
         }
         $this->is_mobile_number = in_array($this->number_type, [PhoneNumberType::FIXED_LINE_OR_MOBILE, PhoneNumberType::MOBILE]);
         // from formatting
         $this->format_e164 = $this->phoneUtil->format($this->phoneNumberProto, PhoneNumberFormat::E164);
         $this->format_international = $this->phoneUtil->format($this->phoneNumberProto, PhoneNumberFormat::INTERNATIONAL);
         $this->format_national = $this->phoneUtil->format($this->phoneNumberProto, PhoneNumberFormat::NATIONAL);
         $this->format_rfc3966 = $this->phoneUtil->format($this->phoneNumberProto, PhoneNumberFormat::RFC3966);
         // from additional
         $phoneNumberOfflineGeocoder = PhoneNumberOfflineGeocoder::getInstance();
         $this->description = $phoneNumberOfflineGeocoder->getDescriptionForNumber($this->phoneNumberProto, 'en');
         $phoneNumberToCarrierMapper = PhoneNumberToCarrierMapper::getInstance();
         $this->carrier_name = $phoneNumberToCarrierMapper->getNameForNumber($this->phoneNumberProto, 'en');
         $phoneNumberToTimeZonesMapper = PhoneNumberToTimeZonesMapper::getInstance();
         $this->timezones = $phoneNumberToTimeZonesMapper->getTimeZonesForNumber($this->phoneNumberProto);
     }
 }
 /**
  * Formats a phone number for out-of-country dialing purposes.
  *
  * Note that in this version, if the number was entered originally using alpha characters and
  * this version of the number is stored in raw_input, this representation of the number will be
  * used rather than the digit representation. Grouping information, as specified by characters
  * such as "-" and " ", will be retained.
  *
  * <p><b>Caveats:</b></p>
  * <ul>
  *  <li> This will not produce good results if the country calling code is both present in the raw
  *       input _and_ is the start of the national number. This is not a problem in the regions
  *       which typically use alpha numbers.
  *  <li> This will also not produce good results if the raw input has any grouping information
  *       within the first three digits of the national number, and if the function needs to strip
  *       preceding digits/words in the raw input before these digits. Normally people group the
  *       first three digits together so this is not a huge problem - and will be fixed if it
  *       proves to be so.
  * </ul>
  *
  * @param PhoneNumber $number  the phone number that needs to be formatted
  * @param String $regionCallingFrom  the region where the call is being placed
  * @return String the formatted phone number
  */
 public function formatOutOfCountryKeepingAlphaChars(PhoneNumber $number, $regionCallingFrom)
 {
     $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) {
         return $this->formatOutOfCountryCallingNumber($number, $regionCallingFrom);
     }
     $countryCode = $number->getCountryCode();
     if (!$this->hasValidCountryCallingCode($countryCode)) {
         return $rawInput;
     }
     // Strip any prefix such as country calling code, IDD, that was present. We do this by comparing
     // the number in raw_input with the parsed number.
     // To do this, first we normalize punctuation. We retain number grouping symbols such as " "
     // only.
     $rawInput = $this->normalizeHelper($rawInput, self::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS, true);
     // Now we trim everything before the first three digits in the parsed number. We choose three
     // because all valid alpha numbers have 3 digits at the start - if it does not, then we don't
     // trim anything at all. Similarly, if the national number was less than three digits, we don't
     // trim anything at all.
     $nationalNumber = $this->getNationalSignificantNumber($number);
     if (mb_strlen($nationalNumber) > 3) {
         $firstNationalNumberDigit = strpos($rawInput, substr($nationalNumber, 0, 3));
         if ($firstNationalNumberDigit !== false) {
             $rawInput = substr($rawInput, $firstNationalNumberDigit);
         }
     }
     $metadataForRegionCallingFrom = $this->getMetadataForRegion($regionCallingFrom);
     if ($countryCode == self::NANPA_COUNTRY_CODE) {
         if ($this->isNANPACountry($regionCallingFrom)) {
             return $countryCode . " " . $rawInput;
         }
     } else {
         if ($metadataForRegionCallingFrom !== null && $countryCode == $this->getCountryCodeForValidRegion($regionCallingFrom)) {
             $formattingPattern = $this->chooseFormattingPatternForNumber($metadataForRegionCallingFrom->numberFormats(), $nationalNumber);
             if ($formattingPattern === null) {
                 // If no pattern above is matched, we format the original input.
                 return $rawInput;
             }
             $newFormat = new NumberFormat();
             $newFormat->mergeFrom($formattingPattern);
             // The first group is the first group of digits that the user wrote together.
             $newFormat->setPattern("(\\d+)(.*)");
             // Here we just concatenate them back together after the national prefix has been fixed.
             $newFormat->setFormat("\$1\$2");
             // Now we format using this pattern instead of the default pattern, but with the national
             // prefix prefixed if necessary.
             // This will not work in the cases where the pattern (and not the leading digits) decide
             // whether a national prefix needs to be used, since we have overridden the pattern to match
             // anything, but that is not the case in the metadata to date.
             return $this->formatNsnUsingPattern($rawInput, $newFormat, PhoneNumberFormat::NATIONAL);
         }
     }
     $internationalPrefixForFormatting = "";
     // If an unsupported region-calling-from is entered, or a country with multiple international
     // prefixes, the international format of the number is returned, unless there is a preferred
     // international prefix.
     if ($metadataForRegionCallingFrom !== null) {
         $internationalPrefix = $metadataForRegionCallingFrom->getInternationalPrefix();
         $uniqueInternationalPrefixMatcher = new Matcher(self::UNIQUE_INTERNATIONAL_PREFIX, $internationalPrefix);
         $internationalPrefixForFormatting = $uniqueInternationalPrefixMatcher->matches() ? $internationalPrefix : $metadataForRegionCallingFrom->getPreferredInternationalPrefix();
     }
     $formattedNumber = $rawInput;
     $regionCode = $this->getRegionCodeForCountryCode($countryCode);
     // Metadata cannot be null because the country calling code is valid.
     $metadataForRegion = $this->getMetadataForRegionOrCallingCode($countryCode, $regionCode);
     $this->maybeAppendFormattedExtension($number, $metadataForRegion, PhoneNumberFormat::INTERNATIONAL, $formattedNumber);
     if (mb_strlen($internationalPrefixForFormatting) > 0) {
         $formattedNumber = $internationalPrefixForFormatting . " " . $countryCode . " " . $formattedNumber;
     } else {
         // Invalid region entered as country-calling-from (so no metadata was found for it) or the
         // region chosen has multiple international dialling prefixes.
         $this->prefixNumberWithCountryCallingCode($countryCode, PhoneNumberFormat::INTERNATIONAL, $formattedNumber);
     }
     return $formattedNumber;
 }