如果电话号码不是特定格式的,我想把它转换成特定格式


I want to convert a telephone number into specific format if it is not in that format

我有一个电话号码,其类型为varchar(32)。它可以是0300474849530047484950300-474849500-4748495[/strong>、>strong>+92-300-4748495923004748495如果不是这种格式,我希望它以这种格式转换为整数923004748495。我将如何实现这一点?有什么想法吗?

我建议对php 使用liphonenumber

github页面的示例代码:

$swissNumberStr = "044 668 18 00";
// First call the class
$phoneUtil = 'libphonenumber'PhoneNumberUtil::getInstance();
try {
    // turn it into a object using a given geo code
    $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH"); 
    // validate the phonenumber
    $isValid = $phoneUtil->isValidNumber($swissNumberProto);
    if($isValid){
        // Produces "+41446681800"
        echo $result_number = $phoneUtil->format($swissNumberProto, 'libphonenumber'PhoneNumberFormat::E164);
         // Produces "044 668 18 00"
        echo $result_number = $phoneUtil->format($swissNumberProto, 'libphonenumber'PhoneNumberFormat::NATIONAL);
        // Produces "+41 44 668 18 00"
        echo $result_number = $phoneUtil->format($swissNumberProto, 'libphonenumber'PhoneNumberFormat::INTERNATIONAL);
    }
} catch ('libphonenumber'NumberParseException $e) {
    var_dump($e);
}

使用preg_replace删除不需要的标志(http://php.net/manual/en/function.preg-replace.php)。

<?php
$number = '+92-300-4748495';
$number = preg_replace('/[^0-9]/', '', $number);
echo $number;

如果您也想删除前导零,可以使用rtrim(http://php.net/manual/en/function.ltrim.php)

<?php
$number = '0300-4748495';
$number = preg_replace('/[^0-9]/', '', $number);
$number = ltrim($number, '0');
echo $number;

附加请求"如果一开始没有添加92,也添加92。"

<?php
$number = '123456';
if (substr($number, 0, 2) != '92') {
    $number = '92' . $number;
}
echo $number;