Reputation: 693
I have a string with structure similar to: 'aba aaa cba sbd dga gad aaa cbz'
. The string can be a bit different each time as it's from an external source.
I would like to replace only first occurrence of 'aaa'
but not the others. Is it possible?
Upvotes: 69
Views: 62550
Reputation: 56497
for example, out $content is:
START
FIRST AAA
SECOND AAA
1) if you use:
$content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content);
it will change everything from the START to the last AAA and Your result will be:
REPLACED_STRING
2) if you use:
$content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content);
Your Result will be like:
REPLACED_STRING
SECOND AAA
Upvotes: 1
Reputation: 141877
The optional fourth parameter of preg_replace is limit
:
preg_replace($search, $replace, $subject, 1);
Upvotes: 133
Reputation: 455302
You can use the limit
argument of preg_replace
for this and set it to 1
so that at most one replacement happens:
$new = preg_replace('/aaa/','replacement',$input,1);
Upvotes: 15