Заміна підрядка

 

Функція 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.