libphonenumber PHP国家

时间:2018-08-16 22:57:05

标签: php libphonenumber

我正在使用此库:https://github.com/davideme/libphonenumber-for-PHP。这是演示代码:

main

这是我的输出:

<?php
use com\google\i18n\phonenumbers\PhoneNumberUtil;
use com\google\i18n\phonenumbers\PhoneNumberFormat;
use com\google\i18n\phonenumbers\NumberParseException;

require 'PhoneNumberUtil.php';

$swissNumberStr = "1212-894-3000";
$phoneUtil = PhoneNumberUtil::getInstance();
try {
    $swissNumberProto = $phoneUtil->parseAndKeepRawInput($swissNumberStr, "US");

    echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::E164) . PHP_EOL;


echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::INTERNATIONAL) . PHP_EOL;
echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::NATIONAL) . PHP_EOL;
echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::E164) . PHP_EOL;

echo $phoneUtil->formatOutOfCountryCallingNumber($swissNumberProto, "US") . PHP_EOL;    
} catch (NumberParseException $e) {
    echo $e;
}

巴基斯坦和其他国家/地区的代码有效,但是Error type: 0. Missing or invalid default region. "US""Canada"等无效。

1 个答案:

答案 0 :(得分:0)

我相信代码中有错误。我已经解决了。该错误位于PhoneNumberUtil.php中。函数名称

private function init($filePrefix) {
在行号231的

正在搜索一个称为REGION_CODE_FOR_NON_GEO_ENTITY的键,该键等于在线119定义的“ 001”。由于数组中没有与“ 001”匹配的键,因此它将第0个元素设为“ US”。我已修复该错误,并将在GitHub上向开发人员报告。新功能如下。

private function init($filePrefix) {
    $this->currentFilePrefix = dirname(__FILE__) . '/data/' . $filePrefix;
    foreach ($this->countryCallingCodeToRegionCodeMap as $regionCodes) {
        $this->supportedRegions = array_merge($this->supportedRegions, $regionCodes);
    }
    $nongeoentity=array_search(self::REGION_CODE_FOR_NON_GEO_ENTITY, $this->supportedRegions);
    if($nongeoentity)
    unset($this->supportedRegions[array_search(self::REGION_CODE_FOR_NON_GEO_ENTITY, $this->supportedRegions)]);
    $this->nanpaRegions = $this->countryCallingCodeToRegionCodeMap[self::NANPA_COUNTRY_CODE];
}