Від автора: вітаю вас, друзі. У цій статті ми познайомимося з функцією str_replace, як певної альтернативи регулярними виразами. Отже, функція str_replace і регулярні вирази. Приступимо?
Регулярні вирази — дуже потужний засіб для пошуку і заміни в тексті. Однак при вирішенні простих задач пошуку і заміни далеко не завжди варто вдаватися до засобів регулярних виразів. Це буде схоже на стрілянину з гармати по горобцях. Завдання-то ви вирішите, але коштів для її вирішення витратите більше, ніж могли б.
Наприклад, перед нами стоїть наступна найпростіша задача. Є рядок з групами цифр, розділених пробілами. Необхідно ці прогалини замінити, скажімо, символом тире. Завдання дійсно найпростіша і вирішити її можна таким же простим шаблоном регулярного виразу:
Однак цю ж задачу можна вирішити і без регулярних виразів. Для рішення можна звернутися до функцій для роботи з рядками, зокрема в PHP це буде функція str_replace. Функція приймає три обов’язкові параметри:
search — що шукаємо
replace — на що міняємо
subject — де шукаємо і міняємо
Вирішимо задачу, використовуючи функцію str_replace:
$str = ‘1111 2222 3333 4444’;
echo str_replace(‘ ‘, ‘-‘, $str);
Результат отримаємо той же, що і з використанням регулярних виразів. Приємним бонусом може стати той факт, що функція str_replace може працювати не тільки з рядками, але і з масивами (array). Приклади роботи можна знайти в документації.
Варто враховувати, що функція str_replace регистрозависима. Наприклад, якщо ми захочемо змінити всі букви «r» в якійсь рядку, то будуть замінені лише літери зазначеного регістра:
$str = ‘rRr’;
echo str_replace(‘r’, ‘!’, $str); // !R!
echo ‘
‘;
echo str_replace(‘R’, ‘!’, $str); // r!r
Але є і регістронезавісімий аналог цієї функції — str_ireplace, який в іншому працює точно так само:
$str = ‘rRr’;
echo str_ireplace(‘r’, ‘!’, $str); // !!!
Звичайно ж, це прості задачі і вже для більш складних доведеться все-таки звертатися за допомогою регулярних виразів. Але якщо ми можемо обійтися без важкої артилерії, тоді навіщо палити з гармати по горобцях?
На цьому у мене все. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!