了解 preg_replace 函数的工作原理

Understanding how preg_replace function works

我看到了类似

的代码
<?php
$str = 'foo   112';
$str = preg_replace('/[0-9]+/', '2000', $str);
// This will be 'foo o' now
echo $str;
?>

输出类似于 foo 2000。我很困惑,因为我知道 [0-9]+ 检查范围内的数字和一个或多个。它不应该像 200020002000 那样产生 o/p 吗?

'/[0-9]+/会同时匹配所有的数值,+表示一次,或者多次出现,然后,2000表示替换掉'/[0-9]+/匹配的2000.

[0-9]+ 中的 '+' 将使其查找一串数字(只有一个数字也是一个字符串)并将它们替换为 '2000'。

此表达式的工作方式如下:

(...,$str) 

^ 看$str

'foo 112'

(..[0-9]..) 

^ 搜索号码

'...1..' //Found one (literally)

(...]+..) 

^ 检查下一个索引以查看是否匹配您正在寻找的内容

'...11..' //Still a number
'...112' //Still a number

还有吗?不
你最后得到了什么? '112'

(..., '2000',..) 

^ 用'2000'替换你得到的

Result: 'foo 2000'

*如果它只是 [0-9],它会按您预期的那样工作。