Input text: school of engineering, school of medicine
Output required: school of education, school of education
Rule: any words followed by \'school of\' needs t
No need to capture anything or use lookarounds.
Demo: https://3v4l.org/uWZgW
$inputext = "school of engineering, school of medicine";
$rule ="/school of \K[a-z]+/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo $outputext;
Match the preceding words (and space after of), restart the fullstring match with \K, then replace the target word.
Sure thing, just use a positive lookbehind on school of plus the space:(?<=school of )\w+
(?<=school of ) matches anything that comes after school of and a space.\w denotes any word character, and + denotes between one and an unlimited number.So your code would be:
$inputext = "school of engineering, school of medicine";
$rule ="/(?<=school of )\w+/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo($outputext);
Which outputs:
school of education, school of education
This can be seen working on Regex101 here and 3val here.