Продолжаю рубрику шпаргалок PHP. В прошлый раз писал про обрезку строк. Вторая востребованная функция, которую постоянно забываю, это функция замены в строке.
PHP функция замены в строке:
str_replace( 'что ищем', 'на что меняем', 'строка', 'количество' );
возвращает 'строка', в которой 'что ищем' заменено на 'на что меняем'. Если в 'количество' стоит переменная, то в неё вернётся количество сделанных замен. Функция чувствительна к регистру.
Массив вместо 'что ищем' и 'на что меняем'
У функции есть дополнительные возможности. К примеру, вместо первого параметра 'что ищем' можно передать не строковую переменную, а массив с несколькими элементами. Тогда значения элементов найдутся в строке:
Пример | Результат |
$a = array('а', 'ы', 'рм'); $b = str_replace($a, '', 'Мама мЫла раму'); |
'Мм мЫл у' |
При таком запуске функция поочерёдно проходит строку со всеми элементами массива $a. Поэтому на окончательном проходе удалились все 'рм' из строки.
Буква Ы не заменилась, потому что функция str_replace чувствительна к регистру. В 'что ищем' была указана маленькая. У функции есть нечувствительный к регистру двойник str_ireplace() с теми же входными параметрами.
Можно передать 'что ищем' и 'на что меняем' в виде массивов с одинаковым количеством элементов. Тогда заменятся все элементы из первого массива соответствующими элементами из второго:
Пример | Результат |
$a = array('м', 'а'); $b = array('к', 'у'); $c = str_replace($a, $b, 'мама', $e); |
$c = 'куку' $e = '4' |
Не рекомендую использовать эту функцию с параметрами в форме массивов. Потому что легко запутаться.