考虑
preg_replace('/(lets go).*/', "going", "lets go somewhere")
它将输出:“go”,我想“去某个地方”。
preg_replace
似乎替换使用第一个匹配,即整个字符串“let go somewhere”。如何使它忽略索引0并仅忽略目标索引1?
答案 0 :(得分:5)
我不知道你想要与.*
匹配什么。你不需要它。这样可以正常工作:
preg_replace('/(lets go)/', "going", "lets go somewhere");
或者你可以使用懒人匹配:
preg_replace('/(lets go).*?/', "going", "lets go somewhere");
说明:你的原始表达是贪婪的。这大致意味着.*
匹配尽可能多的字符。 .*?
很懒惰;它匹配最小字符数。
你也可以匹配某个地方'作为子模式,我们将其替换为:
preg_replace('/(lets go)(.*)/', "going\$2", "lets go somewhere");
下面。 $ 0是"让我们去某个地方",$ 1是"让我们去#34;,$ 2是"某处&#34 ;.需要反斜杠是因为"去\ $ 2"在双引号内。