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


Extract numbers from phone number input field (PHP)

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

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

我目前正在使用以下代码它提取了所有的数字,但问题是它们没有按顺序排列——顺序混乱

如何按照数字在原始字符串中出现的顺序提取数字

preg_match_all('/'d+/', $Phone, $matches);
$Phone = implode('', $matches[0]);

编辑:它们实际上并没有按照这个函数的混乱顺序排列——我将数字插入到int(10)数据库字段中,这导致了混乱。但是,下面的答案仍然是实现我目标的更有效的方法。

使用preg_replace删除任何非数字:

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

注意:"[^''d]"可以替换为"''d"(在非unicode模式下是安全的)。

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

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

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

试试

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

示例:

良好:0877-9320-9356

失败:0877 9320 9356087793209356