W3docs

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()

php— editable, runs on the server

В этом примере строковая переменная $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. Поскольку она работает с обычными строками без накладных расходов на регулярные выражения, это правильный инструмент всегда, когда вы ищете точный, буквальный текст.

Практика

Практика
Что делает функция str_replace в PHP?
Что делает функция str_replace в PHP?
Was this page helpful?