preg_replace所有非数字字符,除了所有10位数字

时间:2018-11-24 15:28:27

标签: php

我想检查服务器端用户的输入是否正确。如果用户输入数字和字符,例如:1234567891是我的参考号12,而1234567899是我的参考号2。

我将只允许使用逗号分隔10位数字的Nunber,所有其他不需要的字符和空格应删除输出:1234567891,1234567899应该存储为变量

我已经使用过pregmatch 我有这段代码,但只删除了空格和字符

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

1 个答案:

答案 0 :(得分:1)

使用preg_match_all,其模式为\b[0-9]{10}\b

$input = "1234567891 IS my REFER NUMBER 12 an 1234567899 IS REFER 2 and 123456789 and 12345678901";
preg_match_all('/\b[0-9]{10}\b/', $input, $matches);
print_r($matches[0]);

Array
(
    [0] => 1234567891
    [1] => 1234567899
)

请注意,我的样本输入中同时显示10位数字和非10位数字,并且输出中仅显示前者。

编辑:

如果您希望在单个字符串中包含所有匹配的数组编号,则可以尝试使用join,例如

$output = join('\n', $matches[0]);
echo $output;

1234567891
1234567899