Php заменить символ строке другой. Str_replace - Заменяет все вхождения строки поиска на строку замены. str_replace с массивами: несколько замен в одной

Сейчас мы рассмотрим одну очень полезную функцию для , а именно для замены частей строк. Это функция str_replace, которая похожа на метод в текстовых редакторах «Заменить». Как ее использовать, примеры и советы читайте ниже.

Параметры вызова

str_replace имеет три параметра, которые все являются обязательными.

Str_replace(search, replace, originalString)

  • search — это то, что вы хотите найти. Это может быть строка или массив.
  • replace — все найденные элементы, которые вы задали в search для поиска, будут заменены на это значение. Это, опять же, может быть строка или массив.
  • originalString — исходная строка, в которой и будет производиться поиск. Функция НЕ меняет входную строку!

На самом деле, здесь, как и во всех предыдущих уроках, все просто. Давайте посмотрим на пример кода и все сразу встанет на свои места.

Пример применения str_replace

Итак, есть у нас входная строка «На полке лежит X килограмм мандарин». Вместо «X» мы хотим подставить нужную цифру. Может для этого воспользоваться реплейсом примерно таким образом:

//Входная строка, которую будем использовать как шаблон $rawstring = "На полке лежит X килограмм мандарин."; //заменяем $str_1 = str_replace("X", "10", $rawstring); //можно и на другое значение заменить, любое $str_2 = str_replace("X", "135473", $rawstring); echo "Первый раз: ". $str_1 . "
"; echo "Второй раз: ". $str_2;

Получаем следующее:

Первый раз: На полке лежит 10 килограмм мандарин. Второй раз: На полке лежит 135473 килограмм мандарин.

Пример, конечно, не из лучших, я просто другого не придумал, но он отражает суть, верно? Надеюсь все понятно, если нет, то спрашивайте в комментариях.

str_replace с массивами: несколько замен в одной

В примере мы использовали реплейс, чтобы заменить одно слово «X» на нашу строку (число или что угодно), но что если мы хотим заменить много слов? Можно попробовать просто использовать функцию несколько раз, или же создать массив слов, КОТОРЫЕ будем заменять, а также второй массив, со значениями НА КОТОРЫЕ будем заменять, чтобы получить результат за один вызов функции.

Давайте расширим тот же пример, но позаменяем еще что-то.

//Строка - шаблон $rawstring = "На Z лежит X килограмм отборных Y."; //массив ЧТО будем заменять $placeholders = array("Z", "X", "Y"); //Массив НА ЧТО будем заменять $vals_1 = array("полке", "5", "апельсинов"); //Ну или на это $vals_2 = array("столе", "189", "груш"); //заменяем раз $str_1 = str_replace($placeholders, $vals_1, $rawstring); //заменяем два $str_2 = str_replace($placeholders, $vals_2, $rawstring); echo "Один: ". $str_1 . "
"; echo "Два: ". $str_2;

Соответственно, что мы получим.

(PHP 4, PHP 5, PHP 7)

str_replace — Заменяет все вхождения строки поиска на строку замены

Описание

Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .

Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .

Список параметров

Если search и replace - массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search - массив, а replace - строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.

Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.

Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.

Replace

Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.

Subject

Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).

Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject , а результатом функции также будет являться массив.

Если передан, то будет установлен в количество произведенных замен.

Возвращаемые значения

Эта функция возвращает строку или массив с замененными значениями.

Примеры

Пример #1 Примеры использования str_replace()

// присваивает
$bodytag = str_replace ("%body%" , "black" , "" );

// присваивает: Hll Wrld f PHP
$vowels = array("a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U" );
$onlyconsonants = str_replace ($vowels , "" , "Hello World of PHP" );

// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day." ;
$healthy = array("fruits" , "vegetables" , "fiber" );
$yummy = array("pizza" , "beer" , "ice cream" );

$newphrase = str_replace ($healthy , $yummy , $phrase );

// присваивает: 2
$str = str_replace ("ll" , "" , "good golly miss molly!" , $count );
echo $count ;
?>

Пример #2 Примеры потенциальных трюков с str_replace()

// Порядок замены
$str = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n" ;
$order = array("\r\n" , "\n" , "\r" );
$replace = "
" ;

// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace ($order , $replace , $str );

// Выводит F, т.к. A заменяется на B, затем B на C, и так далее...
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array("A" , "B" , "C" , "D" , "E" );
$replace = array("B" , "C" , "D" , "E" , "F" );
$subject = "A" ;
echo str_replace ($search , $replace , $subject );

// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array("я" , "о" );
$fruit = array("яблоко" , "орех" );
$text = "я о" ;
$output = str_replace ($letters , $fruit , $text );
echo $output ;
?>

Примечания

Замечание : Эта функция безопасна для обработки данных в двоичной форме.

Предостережение

Замечание о порядке замены

Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.

Замечание :

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

(PHP 4, PHP 5, PHP 7)

str_replace — Заменяет все вхождения строки поиска на строку замены

Описание

Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .

Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .

Список параметров

Если search и replace - массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search - массив, а replace - строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.

Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.

Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.

Replace

Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.

Subject

Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).

Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject , а результатом функции также будет являться массив.

Если передан, то будет установлен в количество произведенных замен.

Возвращаемые значения

Эта функция возвращает строку или массив с замененными значениями.

Примеры

Пример #1 Примеры использования str_replace()

// присваивает
$bodytag = str_replace ("%body%" , "black" , "" );

// присваивает: Hll Wrld f PHP
$vowels = array("a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U" );
$onlyconsonants = str_replace ($vowels , "" , "Hello World of PHP" );

// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day." ;
$healthy = array("fruits" , "vegetables" , "fiber" );
$yummy = array("pizza" , "beer" , "ice cream" );

$newphrase = str_replace ($healthy , $yummy , $phrase );

// присваивает: 2
$str = str_replace ("ll" , "" , "good golly miss molly!" , $count );
echo $count ;
?>

Пример #2 Примеры потенциальных трюков с str_replace()

// Порядок замены
$str = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n" ;
$order = array("\r\n" , "\n" , "\r" );
$replace = "
" ;

// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace ($order , $replace , $str );

// Выводит F, т.к. A заменяется на B, затем B на C, и так далее...
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array("A" , "B" , "C" , "D" , "E" );
$replace = array("B" , "C" , "D" , "E" , "F" );
$subject = "A" ;
echo str_replace ($search , $replace , $subject );

// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array("я" , "о" );
$fruit = array("яблоко" , "орех" );
$text = "я о" ;
$output = str_replace ($letters , $fruit , $text );
echo $output ;
?>

Примечания

Замечание : Эта функция безопасна для обработки данных в двоичной форме.

Предостережение

Замечание о порядке замены

Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.

Замечание :

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