str_replace()
Статья о функции PHP str_replace(), которая заменяет все вхождения одной строки другой. Синтаксис, особенности и примеры использования.
Функция PHP str_replace() заменяет все вхождения искомой строки на строку замены. Она полезна для поиска и подстановки определённых шаблонов в более крупном тексте. Ниже рассматриваются синтаксис, ключевые особенности и примеры использования.
Функция str_replace() используется для замены всех вхождений одной строки внутри другой строки. Синтаксис функции str_replace() выглядит следующим образом:
Синтаксис PHP функции str_replace()
str_replace($search, $replace, $subject, $count = null)Функция принимает три обязательных параметра и один необязательный: $search, $replace, $subject и $count.
$search: Строка или массив строк для поиска.$replace: Строка или массив строк для замены.$subject: Строка или массив строк, в которых выполняется поиск.$count(необязательный): Переменная, передаваемая по ссылке, которая получает количество выполненных замен.
Функция возвращает изменённый $subject. Исходная строка никогда не изменяется на месте, поэтому необходимо сохранять возвращаемое значение. str_replace() чувствительна к регистру — "World" и "world" считаются разными строками. Если нужно игнорировать регистр, используйте str_ireplace().
Базовый пример
Вот простейший способ использования функции str_replace() — замена одного слова другим:
Пример PHP str_replace()
В этом примере строковая переменная $string содержит фразу "The quick brown fox jumps over the lazy dog." Мы заменяем слово "brown" на "red", передавая "brown" в качестве $search и "red" в качестве $replace. Результат:
The quick red fox jumps over the lazy dog.Заменяются все вхождения, а не только первое. Если искомая строка встречается три раза, все три будут заменены за один вызов.
Замена нескольких строк одновременно
Когда $search и $replace являются массивами, каждый элемент $search заменяется элементом с тем же индексом в $replace. Необязательный четвёртый аргумент $count передаётся по ссылке и получает общее количество замен:
Пример с массивами и $count
<?php
$search = ["brown", "fox"];
$replace = ["red", "bear"];
$subject = "The quick brown fox jumps over the lazy dog.";
$count = 0;
$result = str_replace($search, $replace, $subject, $count);
echo $result; // Output: The quick red bear jumps over the lazy dog.
echo "Replacements made: $count"; // Output: Replacements made: 2
?>Если $replace является одной строкой, а $search — массивом, эта строка используется для всех совпадений:
<?php
$result = str_replace(["a", "e", "i"], "*", "education");
echo $result; // Output: *duc*t*on
?>Важный нюанс: замены накапливаются
Замены в массиве применяются последовательно, и каждая из них выполняется на результате предыдущей. Это означает, что только что вставленное значение может снова совпасть с последующим поисковым термином:
<?php
$count = 0;
$result = str_replace(["A", "B"], ["B", "C"], "A", $count);
echo $result; // Output: C
echo "\n";
echo "Replacements: $count"; // Output: Replacements: 2
?>Здесь "A" становится "B" при первом проходе, затем этот "B" становится "C" при втором проходе — итоговый результат равен "C", а счётчик замен равен двум. Тщательно выстраивайте порядок пар поиска/замены, чтобы избежать этого, или используйте strtr(), когда каждая пара должна применяться ровно по одному разу.
Когда использовать str_replace()
- Используйте
str_replace()для быстрого поиска и замены по точному тексту. - Используйте
str_ireplace(), когда совпадение должно быть нечувствительным к регистру. - Используйте
substr_replace(), чтобы заменить часть строки по позиции, а не по содержимому. - Используйте
preg_replace(), когда нужно сопоставление с образцом с помощью регулярных выражений.
Функция str_replace() предоставляет простой и эффективный способ поиска и замены текста в PHP. Поскольку она работает с обычными строками без накладных расходов на регулярные выражения, это правильный инструмент всегда, когда вы ищете точный, буквальный текст.