只用preg_replacereplace第一个匹配

我有一个类似于'aba aaa cba sbd dga gad aaa cbz' 。 每次来自外部来源的string都可能有点不同。

我只想replace第一个'aaa'而不是其他的。 可能吗?

preg_replace的可选第四个参数是limit

 preg_replace($search, $replace, $subject, 1); 

您可以使用preg_replacelimit参数来设置它,并将其设置为1以便至多进行一次replace:

 $new = preg_replace('/aaa/','replacement',$input,1); 

例如,出$内容是:

 START FIRST AAA SECOND AAA 

1)如果你使用:

 $content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content); 

它会改变从开始到最后一个AAA的一切,你的结果将是:

 REPLACED_STRING 

2)如果你使用:

 $content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content); 

你的结果将如下所示:

 REPLACED_STRING SECOND AAA