这是我的代码:
<?php
$search = '12345 1234567 123456';
$res = preg_match_all(
'/(?:^|[\s,;|])(\d{5,7})(?:[\s,;|]|$)/i',
$search,
$matches
);
var_dump($res, $matches[1] ?? []);
这是结果:
int(2)
array(2) {
[0]=>
string(5) "12345"
[1]=>
string(6) "123456"
}
但预期结果将是:
int(2)
array(2) {
[0]=>
string(5) "12345"
[1]=>
string(7) "1234567"
[2]=>
string(6) "123456"
}
为什么中间的数字不匹配,我该如何解决?
在此处进行测试:https://3v4l.org/vflve
这个想法是: 匹配所有开头或结尾或被空格或定界符[,; |]
包围的数字