2010-08-10 82 views
1

如何更改以下任一只是数字REG前的电话号码

1-(999)-999-9999 
1-999-999-9999 
1-999-9999999 
1(999)-999-9999 
1(999)999-9999 

我想最终的产品是19999999999

+0

可能重复http://stackoverflow.com/questions/123559/a-全面的正则表达式为电话号码验证) – JYelton 2010-08-10 15:10:00

回答

2

最简单的方法是将剥离的一切你的字符串的那不是一个号码,然后看看你结束了一个10位数字(或者11,如果你正在做的1强制):

$string = "1-(999)-999-9999"; 
$number = preg_replace('/[^0-9]/', "", $string); // results in 19999999999 
if (strlen($number) == 11) 
{ 
    // Probably have a phone number 
} 
+0

国际的15位数字 – CaffGeek 2010-08-10 15:14:54

+0

是的,但是我将采用他提供的格式。 – 2010-08-10 15:16:04

2

尝试

preg_replace('\D', '', $string); 

这将过滤掉任何非数字。

0

你并不真正需要的正则表达式这...

$number = str_replace(array('-', '(', ')'), '', $number); 
+0

'x','ext','.','+'等东西怎么样 – CaffGeek 2010-08-10 15:19:30

+0

如果你知道输入就像其中一个例子,那就是你所需要的。如果你不知道输入,那么你无论如何都需要更多的验证。 – OIS 2010-08-10 15:23:17

0
preg_replace('[\D*]', '', '1-(999)-999-9999'); 
[对电话号码验证的综合正则表达式(的