为什么preg_replace给出了这个结果

时间:2017-01-19 18:21:56

标签: php

我正在使用这个preg_replace

  echo preg_replace('/.*/','r','string');

https://eval.in/720293

我原以为它应该输出r

但输出是

  

RR

有人可以解释为什么它会回复两个r吗?

1 个答案:

答案 0 :(得分:2)

因为preg_replace使用全局标志,.*首先匹配整个字符串,然后匹配末尾的空字符串,因此你看到r的两倍。 如果您只想替换字符串,则必须更明确地使用该模式。例如,您可以使用以下^.*。 其他选项是为preg_replace添加限制以仅替换第一个匹配: preg_replace('/.*/','r','string',1)