【发布时间】:2019-11-20 09:48:52
【问题描述】:
我有一个字符串$line。例如,
$line = "stringA stringB 4-stringC stringD stringF 12345 stringG 678249 stringH ";
根据var$line,字符串有6个字,2个数值,1个数字和字符串的组合字。
我想捕捉某个字符串,它是一个数值12345。这是我刚刚尝试过的代码:
if (preg_match('/ ([0-9,]+)/', $line, $matches) === 1 && strlen($matches[0]) > 3 && strlen($matches[1]) > 3) {
echo var_dump($matches[0]);
}
但是,一旦跟踪,代码似乎只取字符串上的第一个数值。结果是:
array(2) {
[0]=>
string(2) " 4"
[1]=>
string(1) "4"
}
而不是12345。
那么,如果我只想捕获字符串包含:12345,我应该使用什么“正则表达式”?
【问题讨论】:
-
\d{5}得到 5 位数字 -
发布更多你想要拆分的不同字符串。
-
@jibsteroos 如何设置 get $matches 超过 4 位,并在 preg_match() 中管理?
'/ ([0-9,]+\d{5})/' -
@MatthiasS 我试过
preg_match_all,但没有显示结果。获取last occurence可能是一个解决方案,但是,如果在12345之后还有另一个数字字符串,可能会有风险。您对此有什么建议吗? -
@AgnesPalit 见3v4l.org/49hD7