Точная замена слов в тексте на PHP

Функция str_replace служит для замены подстрок в строке. Задаем слово или слова, которые надо найти в строке и на что их менять, в общем-то это все. Легко и просто. Но если небольшой нюанс, допустим Вам необходимо заменять слова холод, скажем на слово тепло:
$text = str_replace('холод', 'тепло', $text);

Пока в строке будет встречаться слово из 5 букв холод замена будет логичной, но, как только в тексте появится другое слово, с тем же порядком букв, то можем получить белиберду. Например, слово холодно будет изменено, как теплоно, это не есть хорошо.

Решение №1: Добавлять пробелы в начале и конце слов:
$text = str_replace(' холод ', ' тепло ', $text);

Так будет искать и заменять только те слова, которые нужны Вам. Но если в тексте слово холод будет самым первым, то пробела перед словом не будет и замена не осуществица. Так же замены не будет, если после слово холод стоит точка, или любой другой знак препинания. В таком случае подойдет решение №2.

Решение №2: Использовать регулярное выражение ~\строка\b~u и функцию preg_replace:
$text = preg_replace('~\холод\b~u', 'тепло', $text);
Автор: