繁体   English   中英

将本地电话号码格式化为国际(已知国家)

[英]formatting local phone numbers into international (knowing countries)

我使用 SMS API 向手机发送确认码。
它的参数要求我将访客电话号码格式设置为国际,例如 +9912345678 而不是 012 345 678。
考虑到我知道用户的国家(来自选择输入)和号码(来自文本输入)他在以前的网页?

您只需将 0 替换为国家/地区代码即可轻松完成此操作。

示例:

$originalNumber = '012345678';
$countryCode = '+99'; // Replace with known country code of user.
$internationalNumber = preg_replace('/^0/', $countryCode, $originalNumber);
echo $internationalNumber; // Will output: +9912345678

希望这会有所帮助。

我以前使用过这个库(没有作曲家)并且运行良好: https : //github.com/davideme/libphonenumber-for-PHP

您只需要在您的 php PhoneNumberUtil.php include ,该文件就知道还需要包含哪些内容。

您可以像这样格式化数字:

$swissNumberStr = "044 668 18 00";
$phoneUtil = PhoneNumberUtil::getInstance();
try {
    $swissNumberProto = $phoneUtil->parseAndKeepRawInput($swissNumberStr, "CH");
    var_dump($swissNumberProto);
} catch (NumberParseException $e) {
    echo $e;
}
echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::INTERNATIONAL)

查看demo.php以查看有关如何使用库的更多示例。

根据@Huso 的回答,我编写了以下函数来格式化和清理(删除破折号、点和空格)电话号码:

function phonize($phoneNumber, $country) {

    $countryCodes = array(
        'ch' => '+41',
        'de' => '+43',
        'it' => '+39'
    );

    return preg_replace('/[^0-9+]/', '',
           preg_replace('/^0/', $countryCodes[$country], $phoneNumber));
}

使用:

$phone   = '022 123 43 65';
$country = 'ch';

$phone   = phonize($phone, $country);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM