Вы можете сделать это с помощью нескольких вызовов preg_replace
, указав ограничение 1 для каждого вызова:
$string = "Hi mom, hi dad";
preg_replace('/hi/i', 'mary', $str, 1); // "mary mom, hi dad"
preg_replace('/hi/i', 'john', $str, 1); // "mary mom, john dad"
Вы можете обобщить это следующим образом.Требуется тема, шаблон и 1 или более замещающих слов.
function replace_each($subject, $pattern, $replacement) {
$count = 0;
for ($i = 2; $i < func_num_args(); ++$i) {
$replacement = func_get_arg($i);
$subject = preg_replace($pattern, $replacement, $subject, 1, $count);
if (!$count)
// no more matches
break;
}
return $subject;
}
$string = preg_replace_each("Hi mom, hi dad", "/hi/i", "mary", "john");
echo $string; // "mary mom, john dad"