PHP电话号码分析器
仅为英国和爱尔兰构建应用程序,但可能扩展到其他国家。我们已经构建了一个API,我正在尝试决定A)如何存储电话号码B)如何编写解析器来理解所有输入和比较格式 e、 g 假设一个用户在爱尔兰,他们会以这些格式添加一个电话号码 0871231234 087 123 1234 087-1234 +35387123234 或以有效方式书写数字的任何其他组合。我们希望考虑到这一点,以便能够以一致的方式向我们的数据库中添加一个新的数字 因此,上述所有数字都可能存储为00353871234PHP电话号码分析器,php,class,Php,Class,仅为英国和爱尔兰构建应用程序,但可能扩展到其他国家。我们已经构建了一个API,我正在尝试决定A)如何存储电话号码B)如何编写解析器来理解所有输入和比较格式 e、 g 假设一个用户在爱尔兰,他们会以这些格式添加一个电话号码 0871231234 087 123 1234 087-1234 +35387123234 或以有效方式书写数字的任何其他组合。我们希望考虑到这一点,以便能够以一致的方式向我们的数据库中添加一个新的数字 因此,上述所有数字都可能存储为00353871234 问题是我还需要为所有
问题是我还需要为所有英国人做语法分析。有什么类可以帮助这个过程吗?使用正则表达式。可以找到一个信息页面。它应该不会太难学,而且对你非常有用 以下是在英国验证电话号码的常规表达式:
^((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$
它允许3位、4位或5位地区前缀,分别带有8位、7位或6位电话号码,加上可选的3位或4位分机号码,前缀为#符号。还允许在区域前缀周围使用可选括号,并在适当的数字组之间使用可选空格。可以找到更多
Stackoverflow链接应该可以帮助您了解正则表达式如何与国际电话号码一起使用。如果需要,设计英国第一个附加模块的基本功能。如果以后需要,您可以将每个国家/地区的逻辑分开。我倾向于谨慎乐观,你想接受尽可能多的数字吗
>尝试< /P>你应该考虑把号码存储为<代码> 353871231234版/COD>因为<代码> 00 < /C>不是所有国家的国际电话前缀。这里有一些维基百科文章可能有帮助:(参见)。简言之,E.164数字最多可以有15位数字。我猜否决票意味着您应该提供一个正则表达式示例。这是一个在PHP代码中使用正则表达式的示例,要了解正则表达式的含义和格式,请参阅我的答案。
?php
$array = array
(
'0871231234',
'087 123 1234',
'087-1231234',
'+353871231234'
);
foreach($array as $a)
if(preg_match("/(^[0-9]{10}$)|(^[0-9]{3}\ [0-9]{3}\ [0-9]{4}$)|(^[0-9]{3}\-[0-9]{7}$)|(^\+353[0-9]{9}$)/", $a))
{
// removes +35
$a = preg_replace("/^\+[0-9]{2}/", '', $a);
// removes first number
$a = preg_replace("/^[0-9]{1}/", '', $a);
// removes spaces and -
$a = preg_replace("/(\s+)|(\-)/", '', $a);
$a = "00353".$a;
echo $a."\n";
}
?>