用PHP标识字符串中的国际电话号码

时间:2011-06-15 20:35:49

标签: php regex drupal-6 phone-number

我正在尝试编写一个函数,从一个在地球上某个地方有效的字符串中提取有效的电话号码。这是一个真正的国际站点,适用于遍布全球各地的组织,以及每个位置的用户访问它。

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

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

3 个答案:

答案 0 :(得分:5)

有一个Google's Phone Number Library的PHP端口。

答案 1 :(得分:2)

你可以使用这样的东西:

$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或任何范围覆盖。

答案 2 :(得分:0)

首先,您需要编制有效电话号码格式列表。

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

第三,您将对文本运行正则表达式以找到数字。