Заміна підрядка
Функція str_replace
Для заміни входження підрядка можна використовувати функцію str_replace (). Це проста і зручна функція, що дозволяє вирішувати безліч завдань, які потребують особливих тонкощів при виборі замінної підрядка. Для того щоб робити заміни з більш складними умовами, використовують механізм регулярних виразів і відповідні функції ereg_replace () і preg_replace (). Синтаксис функції str_replace () такий:
str_replace (шукане значення,
значення для заміни, об'єкт)
Функція str_replace () шукає в даному об'єкті значення і заміняє його значенням, призначеним для заміни.
Чому ми говоримо тут не про рядки для пошуку і заміни на вихідний рядок, а і про значення об'єкт, в якому відбувається заміна? Справа в тому, що починаючи з PHP 4.0.5 будь-який аргумент цієї функції може бути масивом.
Якщо об'єкт, в якому проводиться пошук і заміна, є масивом, то ці дії виконуються для кожного елемента масиву і в результаті повертається новий масив.
Приклад. Використання функції str_replace ()
<? Php
$greeting = array ("Привіт", "Привіт всім!",
"Привіт, дорога!"); // Об'єкт
$new_greet = str_replace ("Привіт",
"Доброго ранку", $greeting);
// Робимо заміну
print_r ($new_greet);
/* Отримаємо: Array ([0] => Добрий ранок
[1] => Добрий ранок усім!
[2] => Добрий ранок, дорога!) */
?>
Якщо шукане значення і значення для заміни - масиви, то береться по одному значенню з кожного масиву і проводиться їх пошук і заміна в об'єкті. Якщо значень для заміни менше, ніж значень для пошуку, то в якості нових значень використовується порожній рядок.
Приклад. Використання функції str_replace ().
<? Php
$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] => )
Якщо значення для пошуку - масив, а значення для заміни - рядок, то цей рядок буде використаний для заміни всіх знайдених значень.
Приклад. Використання функції str_replace ().
<? Php
$greeting = array ("Привіт", "Привіт всім!",
"Привіт, дорога!", "Здрастуйте",
"Здрастуйте, товариші");
// Об'єкт
$search = array ("Привіт", "Здрастуйте");
// Значення, що будемо замінювати
$replace = "День добрий";
// Значення, яким будемо замінювати
$new_greet = str_replace ($search,
$replace, $ greeting); / / робимо заміну print_r ($new_greet);
// Виводимо отриманий масив
?>
Отримаємо:
Array (
[0] => День добрий
[1] => День добрий усім!
[2] => День добрий, дорога!
[3] => День добрий
[4] => День добрий, товариші )
Функція str_replace () чутлива до регістру, але існує її регістронезалежний аналог – функція str_ireplace (). Однак ця функція підтримується не у всіх версіях PHP.