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.