0

在我的网站上,人们可以用他们的电话号码注册。每个电话号码只允许一个帐户。问题是:一个电话号码可以有多种写法。

我来自比利时。我们的(手机)电话号码是这样的:04xx xx xx xx(例如 04 99 12 34 56)。比利时的国家代码是 0032,所以 0032499 12 34 56 也是一个有效的电话号码,就像 +32499 12 34 56 一样。

所以不,我有三个完全相同的电话号码,但写得不同,系统无法识别它们相同。

可能的解决方案(不起作用)

每个比利时电话号码都有相同的结尾:

00324xxxxxxxxx

+324xxxxxxxxx

04xxxxxxxxx

我可以检查最后 9 位数字(从 4 开始),但问题是:不仅比利时人可以注册,其他国家也可以注册。美国手机号码不以 4xxxxxxxx 结尾,所以我无法对这些号码进行此项检查。

可能的解决方案

添加包含所有国家/地区代码的下拉列表,并在提交之前规范化每个电话号码。

对于比利时电话号码:+32(下拉)0499 12 34 56(输入)将变为 +32(下拉)499 12 34 56(去掉 0)。

可能的解决方案 2

我可以使用这样的 API(https://www.searchbug.com/api/identify-phone-number.aspx),但它不是免费的。有我可以自己托管的免费解决方案吗?

4

1 回答 1

1

假设您的网站是用 PHP 实现的,您可以通过以下方式在将电话号码插入数据库之前规范化您的电话号码:

<?php
$input_number="00324xxxxxxxx";
// or v.gr. $input_number="04xxxxxxxx";
$number=$input_number;

$number=preg_replace("/^00/", "+", $number);
$number=preg_replace("/^0/", "+32", $number); // see remark below

echo "input: ", $input_number, ", normalized form: ", $number, "\n";

如果 04xxxxxxxx 格式的号码不应该只是比利时号码,请添加下拉功能以强制您的用户提供国家/地区前缀。

于 2020-02-05T10:23:48.530 回答