电话号码格式化 PHP



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

假设我有一个客户在该 Web 应用程序中错误地插入了一个电话号码。我创建了两种类型的检查来更正电话号码:

//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);
}

反正有问题。假设客户插入了以下不正确的电话号码:"39 3939xxxxxx",其中第一个"39"是意大利语前缀,没有缺少的 +(因此,电话号码不正确(。

在这种情况下,我完全迷失了,因为如果我删除"39",那么我也会删除一半的数字;如果我在"39"中添加一个+,我可能会有类似"+39+39+39xxxx

主要问题是我不知道前缀是否包含在数字中,所以我被困在这里,因为我不知道实现什么样的控件而不会留下任何误差。

编辑:我注意到有一个Google库可以帮助解决此问题,但是目前将其集成到我的Web应用程序中对我来说是一个问题。

使用libphonenumber-for-php库,请点击此链接 https://github.com/giggsey/libphonenumber-for-php

最新更新