了解 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],它会按您预期的那样工作。
我看到了类似
的代码<?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],它会按您预期的那样工作。