Это древний вопрос, но почему все упускают из виду самое простое решение на основе регулярных выражений? Нормальные кванторы регулярных выражений жадные люди! Если вы хотите найти последний экземпляр шаблона, просто вставьте .*
перед ним. Вот как:
$text = "The quick brown fox, fox, fox, fox, jumps over etc.";
$fixed = preg_replace("((.*)fox)", "$1DUCK", $text);
print($fixed);
Это заменит последний экземпляр "fox" на "DUCK", как и положено, и напечатает:
The quick brown fox, fox, fox, DUCK, jumps over etc.