用PHP字符串识别国际电话号码


Identifying international phone numbers in string in PHP

我正试图编写一个函数,从地球上某个地方有效的字符串中提取有效的电话号码。这是一个真正的国际网站,对于一个在全球各地都有位置的组织来说,每个位置的用户都可以访问它

我主要需要这个来进行数据库迁移。我要迁移的以前的网站只使用了一个简单的文本字段,没有说明,也没有筛选。因此,这导致了电话领域被以各种创造性的方式使用。

我所寻找的只是识别字符串中的第一个电话号码,然后可能在将结果设置为用户配置文件信息之前删除任何多余的字符。

谷歌的电话号码库中有一个PHP端口。

您可以使用这样的东西:

$pattern = '/(['+_'-'(')a-z ]+)/';

$pattern = '/([^0-9]+)/i';
$phone = preg_replace($pattern,'', $phone);

或者,使用php过滤器,如:

$phone = (int) filter_var($phone, FILTER_SANITIZE_NUMBER_INT);

尽管使用过滤器时,如果允许值以"0"开头,则需要小心。

然后,无论哪种方式,都要检查允许的电话号码的长度范围~6-12,或者你的范围涵盖的任何内容。

首先,您需要编译一个有效电话号码格式的列表。

其次,您需要创建正则表达式来识别每种格式。

第三,您将对文本运行正则表达式来定位数字。