Как в PHP заменить символы или слово в строке

4

Замена одного фрагмента текста другим весьма распространенная задача в любом языке программирования.

Замена строк в PHP с помощью str_replace()

В PHP есть специальная функция str_replace($search, $replace, $subject, $count), которая предназначена замены текста.

Параметр $search используется для указания строк, которые необходимо найти. На что нужно будет заменить найденную строку указывается в$replace. Параметр $subject — это основная строка, в которой будет выполнять замена.

В качестве значений параметров $search и $replace можно указывать строку или массив.

<?php
 
$subject = "Андрей любит кофе.";
 
$search = "Андрей";
$replace = "Миша";
 
$new_subject = str_replace($search, $replace, $subject);
 
// Миша любит кофе.
echo $new_subject;
 
?>

Заменить несколько строк одной строкой

В качестве значения параметра $search укажем массив. Причем, если $replace — это одна строка, тогда все значения в массиве $search будут заменены на $replace в нашей основной строке.

<?php
 
$subject = "Яблоки и груши я положил на стол. Апельсины и бананы остались в пакете.";
 
$search = ["груши", "бананы"];
$replace = "мандарины";
 
$new_subject = str_replace($search, $replace, $subject);
 
// Яблоки и мандарины я положил на стол. Апельсины и мандарины остались в пакете.
echo $new_subject;
 
?>

Удалить символ или подстроку из строки

Сделать это весьма просто — достаточно лишь оставить пустым значение параметра $replace.

<?php
 
$subject = "Груши, яблоки и виноград это фрукты.";
 
$search = [", яблоки"];
$replace = "";
 
$new_subject = str_replace($search, $replace, $subject);
 
// Груши и виноград это фрукты.
echo $new_subject;
 
?>

Заменить одни подстроки и удалить другие

В качестве значения параметрам $search и $replace можно указать массив. В этом случае первый элемент из $search будет заменен первым элементом из $replace и так далее.

Если в $search окажется больше элементов, чем в $replace, то лишние элементы в $search будут заменены пустой строкой.

<?php
 
$subject = "Виноград: это фрукт, кустарник или дерево?";
 
$search = ["фрукт", ", кустарник"];
$replace = ["ягода"];
 
$new_subjecte = str_replace($search, $replace, $subject);
 
// Виноград: это ягода или кустарник?
echo $new_subject;
 
?>

Подсчет количества замен

Чтобы узнать какое количество замен выполнила функция str_replace() необходимо воспользоваться параметром $count.

<?php
 
$subject = "Известно, что виноград — многолетнее низкорослое плодоносящее растение, требующее ухода. Следует знать, что виноград — это такое растение, которое имеет многостороннее применение.";
 
$search = "виноград";
$replace = "мандарин";
$count = 0;
 
$new_subject = str_replace($search, $replace, $subject, $count);
 
// Известно, что мандарин — многолетнее низкорослое плодоносящее растение, требующее ухода. 
// Следует знать, что мандарин — это такое растение, которое имеет многостороннее применение.
echo $new_sentence;
 
// 2
echo $count;
 
?>

Функция str_replace() чувствительна к регистру

Функция чувствительная к регистру. Если требуется производить замены без учета регистра, то необходимо воспользоваться функцией str_ireplace().

<?php
 
$subject = "Новый iMac меняет представление о настольных компьютерах.";
 
$search = "imac";
$replace = "аймак";
 
$new_sentence = str_ireplace($search, $replace, $subject);
 
// Новый аймак меняет представление о настольных компьютерах.
echo $new_subject;
 
?>

Возможные ошибки

Перед использованием функции убедитесь, что значение $replace не является частью другого слова.

Теги

🔥 You may also like