2012-02-17 260 views
3

我有一个电话号码输入栏,它允许用户以他们想要的任何格式添加电话号码(555-555-5555,(555)555-5555等)。从电话号码输入栏(PHP)提取号码

由于它只是一个电话号码字段,我可以忽略所有字段中的数字。

我正在使用下面的代码。 它提取所有的数字,但问题是它们不是为了 - 它是混乱的顺序。

如何提取数字按原始字符串显示的顺序?

preg_match_all('/\d+/', $Phone, $matches); 

$Phone = implode('', $matches[0]); 

编辑:他们实际上不是在这个函数一个混乱的秩序 - 我将号码为INT(10)数据库字段,这引起了混杂。但是,下面的答案仍然是实现我的目标的更有效的方式。

回答

2
$Phone = preg_replace('/[^\d]/', '', $Phone); 
2

为什么不更换,是不是一个数字字符串中的一切吗?

$number = preg_replace("/[^0-9]/", '', $Phone); 
+0

有什么用'其他的例子之间的区别^ \ d'和哟你'^ 0-9'? – 2012-02-17 19:02:46

+1

无。 \ d只是一个与字符类[0-9]相同的转义序列。某些转义序列依赖于区域设置,但我不相信\ d是。见http://www.php.net/manual/en/regexp.reference.escape.php – 2012-02-17 19:04:56

0

试试吧

if (!preg_match("/^[0-9\-]*$/",$Phone)) { 
    echo "Only Numeric and strip (-)"; 
} 

例子:

好:0877-9320-9356

失败:0877 9320 9356087793209356