str_replace
служит для замены подстрок в строке. Задаем слово или слова, которые надо найти в строке и на что их менять, в общем-то это все. Легко и просто. Но если небольшой нюанс, допустим Вам необходимо заменять слова холод
, скажем на слово тепло
:
$text = str_replace('холод', 'тепло', $text);
Пока в строке будет встречаться слово из 5 букв
холод
замена будет логичной, но, как только в тексте появится другое слово, с тем же порядком букв, то можем получить белиберду. Например, слово холодно
будет изменено, как теплоно
, это не есть хорошо.Решение №1: Добавлять пробелы в начале и конце слов:
$text = str_replace(' холод ', ' тепло ', $text);
Так будет искать и заменять только те слова, которые нужны Вам. Но если в тексте слово
холод
будет самым первым, то пробела перед словом не будет и замена не осуществица. Так же замены не будет, если после слово холод
стоит точка, или любой другой знак препинания. В таком случае подойдет решение №2.Решение №2: Использовать регулярное выражение
~\строка\b~u
и функцию preg_replace
:
$text = preg_replace('~\холод\b~u', 'тепло', $text);