Str ireplace: примеры (PHP)
str_ireplace(mixed search, mixed replace, mixed subject [, int &count]): mixedФункция str_ireplace в PHP
Функция str_ireplace осуществляет замену всех вхождений искомого значения на указанное значение в строке или массиве. Отличительная особенность — регистронезависимый поиск. Использование функции актуально при необходимости модификации текста без учета регистра символов, например, при обработке пользовательского ввода или форматировании данных.
Функция принимает до четырех параметров:
- search (mixed): Искомое значение. Может быть строкой или массивом строк.
- replace (mixed): Значение для замены. Может быть строкой или массивом строк.
- subject (mixed): Строка или массив, в котором производится замена.
- count (int, необязательный): Если указан, в него будет записано количество выполненных замен.
Когда аргументы search и replace являются массивами, функция обрабатывает их поэлементно. Если массив replace содержит меньше элементов, чем search, для отсутствующих элементов используется пустая строка.
Краткие примеры использования str_ireplace
$text = 'PHP это язык программирования. PHP популярен.';
$result = str_ireplace('php', 'JavaScript', $text);
echo $result;JavaScript это язык программирования. JavaScript популярен.
$text = 'Кот, кошка, котята.';
$search = ['кот', 'кошка'];
$replace = ['собака', 'собака'];
$result = str_ireplace($search, $replace, $text);
echo $result;Собака, собака, котята.
$text = 'Яблоко, яблоко, яблоко.';
$count = 0;
$result = str_ireplace('яблоко', 'груша', $text, $count);
echo 'Результат: ' . $result . '\n';
echo 'Замен произведено: ' . $count;Результат: Груша, груша, груша. Замен произведено: 3
$array = ['Синий дом', 'Красный дом', 'Зеленый дом'];
$result = str_ireplace('дом', 'автомобиль', $array);
print_r($result);Array
(
[0] => Синий автомобиль
[1] => Красный автомобиль
[2] => Зеленый автомобиль
)Похожие функции в PHP
Функция str_replace выполняет ту же задачу, но с учетом регистра. Использование предпочтительно, когда важно различать прописные и строчные буквы.
Функция preg_replace выполняет поиск и замену по регулярному выражению. Модификатор i позволяет сделать поиск регистронезависимым. Выбор в пользу preg_replace оправдан при необходимости сложного паттерна поиска.
Функция substr_replace заменяет часть строки, заданную смещением и длиной. Используется, когда позиция замены известна, а не ее содержание.
Функция strtr преобразует заданные символы или заменяет подстроки. Работает быстрее для множественных замен одиночных символов или когда заменяемые подстроки имеют разную длину.
Типичные ошибки при использовании
$text = 'a b c';
$result = str_ireplace(['a', 'b', 'c'], ['X', 'Y'], $text);
echo $result;X Y
Третий элемент массива search ('c') заменяется на пустую строку, так как для него нет пары в replace.
$text = 'Hello World';
$result = str_ireplace($text, 'World', 'Hello');
echo $result;Функция ищет в строке 'Hello' подстроку 'Hello World' и заменяет её на 'World'. Совпадений нет, возвращается исходная строка 'Hello'.
$text = 'a';
$result = str_ireplace('a', 'a b', $text);
echo $result;a b
Замена производится один раз, рекурсивной замены не происходит. Функция не обрабатывает результат замены повторно.
Изменения в последних версиях PHP
В PHP 8.0 поведение функции str_ireplace не претерпело значительных изменений. Однако, в более ранних версиях, начиная с PHP 5.0, функция поддерживает параметр count. В PHP 7.4 и более ранних, при передаче неверных типов аргументов, вызывались предупреждения. В PHP 8.0 многие подобные предупреждения были преобразованы в исключения TypeError. Общий принцип работы функции остается стабильным.
Расширенные примеры использования
$html = '<div>Пример <b>Жирного</b> текста.</div>';
$tags = ['div', 'b'];
$result = str_ireplace($tags, '', $html);
echo htmlspecialchars($result);Пример Жирного текста.
$text = 'Этот товар просто отличный и не плохой!';
$stopWords = ['просто', 'не', 'плохой'];
$cleanText = str_ireplace($stopWords, '', $text);
$cleanText = preg_replace('/\s+/', ' ', trim($cleanText));
echo $cleanText;Этот товар отличный и !
$text = 'цветы ЦВЕТЫ цветы';
$search = 'цветы';
$replace = 'ягоды';
// Замена только второго вхождения (регистронезависимо)
$parts = explode($search, $text, 3);
$result = $parts[0] . $search . $parts[1] . $replace . $parts[2];
echo $result;цветы ЦВЕТЫ ягоды
Важно помнить, что str_ireplace не поддерживает многобайтовые кодировки напрямую. Для UTF-8 используют комбинацию с mb_convert_case или preg_replace с модификатором u.
$text = 'Привет Мир';
$search = 'мир';
$replace = 'Вселенная';
// Решение через preg_replace
$result = preg_replace('/'.preg_quote($search, '/').'/iu', $replace, $text);
echo $result;Привет Вселенная
Аналоги функции в других языках
Метод str.replace() в Python регистрозависим. Для регистронезависимой замены используют комбинацию с модулем re.
import re
text = 'Python is great. python is simple.'
result = re.sub(r'(?i)python', 'Java', text)
print(result)Java is great. Java is simple.
Метод String.prototype.replace() с флагом 'gi' в регулярном выражении.
let text = 'JavaScript is flexible. javascript is powerful.';
let result = text.replace(/javascript/gi, 'TypeScript');
console.log(result);TypeScript is flexible. TypeScript is powerful.
Функция REPLACE() в MySQL регистрозависима при использовании сборок с учетом регистра. Для регистронезависимой замены данные приводят к одному регистру или используют REGEXP_REPLACE() (начиная с MySQL 8.0).
-- REPLACE() чувствительна к регистру в соответствующей сборке
SELECT REPLACE('MySQL Database', 'mysql', 'PostgreSQL');
-- Использование REGEXP_REPLACE с флагом 'i'
SELECT REGEXP_REPLACE('MySQL Database', 'mysql', 'PostgreSQL', 1, 0, 'i');MySQL Database PostgreSQL Database