使用preg_replace仅替换第一个匹配项

时间:2011-07-18 07:17:05

标签: php regex preg-replace

我有一个结构类似于'aba aaa cba sbd dga gad aaa cbz'的字符串。字符串每次都可能有点不同,因为它来自外部源。

我想只替换第一次出现的'aaa'而不是其他的{{1}}。有可能吗?

3 个答案:

答案 0 :(得分:97)

preg_replace的可选第四个参数是limit

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

答案 1 :(得分:10)

您可以使用limit的{​​{1}}参数进行设置,并将其设置为preg_replace,以便最多可以进行一次替换:

1

答案 2 :(得分:0)

例如,out $ content是:

START 
FIRST AAA 
SECOND AAA

1)如果您使用:

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

它将改变从START到最后一个AAA的所有内容,您的结果将是:

REPLACED_STRING

2)如果您使用:

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

您的结果将如下:

REPLACED_STRING 
SECOND AAA