Язык программирования 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] =>
>)
Если значения для поиска – массив, а значение для замены – строка, то эта строка будет использована для замены всех найденных значений.