从电话号码输入字段中提取数字(PHP)

时间:2012-02-17 18:58:49

标签: php regex preg-match phone-number

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

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

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

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

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

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

编辑:它们实际上并不是来自此函数的混乱顺序 - 我将数字插入到int(10)数据库字段中,这导致了混乱。但是,下面的答案仍然是实现我的目标的更有效方式。

4 个答案:

答案 0 :(得分:4)

使用preg_replace删除任何非数字:

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

为什么不直接替换字符串中不是数字的所有内容?

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

答案 3 :(得分:0)

试试吧

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

示例:

好:0877-9320-9356

失败:0877 9320 9356087793209356