Phone 数字格式 PHP

Phone number formatting PHP

使用第三方 Web 应用程序的 API,我检索了客户的数据,包括电子邮件、国家/地区、phone 号码等。

假设我有一位客户在该 Web 应用程序中插入了一个 phone 号码 错误 。我创建了两种类型的支票来更正 phone 号码:

//phone prefix totally missing
if( substr($phone_number, 0, 1) != '+' ) {
    if( substr($phone_number, 0, 2) == '00' ) {
        $phone_number = '+'.substr($phone_number, 2);
    } else {
        $phone_number = $this->params['prefix'].$phone_number;
    }
}


// double prefix prevention (since October 2019)
if (substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 3) == substr($phone_number, 3, 3)) {
    $phone_number = substr($phone_number, 3);
} else if(substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 2) == substr($phone_number, 2, 2)) {
    $phone_number = substr($phone_number, 2);
} else if(substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 4) == substr($phone_number, 4, 4)) {
    $phone_number = substr($phone_number, 4);
}



无论如何都有问题。假设客户插入了以下不正确的 phone 号码:“39 3939xxxxxx”,其中第一个“39”是没有 + 的意大利语前缀(因此,phone 号码不正确).

在这种情况下,我完全迷路了,因为如果我删除“39”,那么我也会删除一半的数字;如果我将 + 添加到“39"s, I risk to have something like "+39+39+39xxxxxx”。

主要问题是我不知道数字中是否包含前缀,所以我卡在这里,因为我不知道在不留任何误差的情况下实现什么样的控制.

编辑:我注意到有一个 Google 库可以帮助解决这个问题,但目前我无法将它集成到我的 Web 应用程序中。

使用libphonenumber-for-php library, follow this link https://github.com/giggsey/libphonenumber-for-php