Язык программирования PHP | страница 74




Итак, как выделять и находить подстроки, мы рассмотрели. Теперь научимся заменять строку, входящую в состав исходной строки, на другую строку по нашему выбору.


Замена вхождения подстроки


Функция str_replace


Для замены вхождения подстроки можно использовать функцию str_replace(). Это простая и удобная функция, позволяющая решать множество задач, не требующих особых тонкостей при выборе заменяемой подстроки. Для того чтобы производить замены с более сложными условиями, используют механизм регулярных выражений и соответствующие функции ereg_replace() и preg_replace(). Синтаксис функции str_replace() такой:


>str_replace(искомое значение,

> значение для замены, объект)


Функция str_replace() ищет в рассматриваемом объекте значение и заменяет его значением, предназначенным для замены. Почему мы говорим здесь не про строки для поиска и замены и исходную строку, а про значения и объект, в котором происходит замена? Дело в том, что начиная с PHP 4.0.5 любой аргумент этой функции может быть массивом.


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


>

>$greeting = array("Привет", "Привет всем!",

> "Привет, дорогая!"); // объект

>$new_greet = str_replace("Привет",

> "Доброе утро", $greeting);

> // делаем замену

>print_r($new_greet);

>/* получим: Array ([0]=>Доброе утро

> [1]=>Доброе утро всем!

> [2]=>Доброе утро, дорогая!) */

>?>



Если искомое значение и значение для замены – массивы, то берется по одному значению из каждого массива и производится их поиск и замена в объекте. Если значений для замены меньше, чем значений для поиска, то в качестве новых значений используется пустая строка.


>

>$greeting = array("Привет", "Привет всем!",

> "Привет, дорогая!","Здравствуйте",

> "Здравствуйте, товарищи", "Hi");

> // объект

>$search = array ("Привет",

> "Здравствуйте", "Hi");

> // значения, которые будем заменять

>$replace = array ("Доброе утро",

> "День добрый");

> // значения, которыми будем заменять

>$new_greet = str_replace($search, $replace,

> $greeting);

> // делаем замену

>print_r($new_greet);

> //выводим полученный массив

>?>



В результате получим такой массив:


>Array (

>[0] => Доброе утро

>[1] => Доброе утро всем!

>[2] => Доброе утро, дорогая!

>[3] => День добрый

>[4] => День добрый, товарищи

>[5] =>

>)



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