От автора: приветствую вас, друзья. В этой статье мы познакомимся с функцией str_replace, как определенной альтернативе регулярным выражениями. Итак, функция str_replace и регулярные выражения. Приступим?
Регулярные выражения — очень мощное средство для поиска и замены в тексте. Однако при решении простых задач поиска и замены далеко не всегда стоит прибегать к средствам регулярных выражений. Это будет сродни стрельбе из пушки по воробьям. Задачу-то вы решите, но средств для ее решения потратите больше, чем могли бы.
Например, перед нами стоит следующая простейшая задача. Есть строка с группами цифр, разделенных пробелами. Необходимо эти пробелы заменить, скажем, символом тире. Задача действительно простейшая и решить ее можно таким же простейшим шаблоном регулярного выражения:
Однако эту же задачу можно решить и без регулярных выражений. Для решения можно обратиться к функциям для работы со строками, в частности в PHP это будет функция str_replace. Функция принимает три обязательных параметра:
search — что ищем
replace — на что меняем
subject — где ищем и меняем
Решим задачу, используя функцию str_replace:
1 2 |
$str = '1111 2222 3333 4444'; echo str_replace(' ', '-', $str); |
Результат получим тот же, что и с использованием регулярных выражений. Приятным бонусом может стать тот факт, что функция str_replace может работать не только со строками, но и с массивами (array). Примеры работы можно найти в документации.
Стоит учитывать, что функция str_replace регистрозависима. Например, если мы захотим изменить все буквы «r» в некой строке, то будут заменены только буквы указанного регистра:
1 2 3 4 |
$str = 'rRr'; echo str_replace('r', '!', $str); // !R! echo '<br>'; echo str_replace('R', '!', $str); // r!r |
Но есть и регистронезависимый аналог этой функции — str_ireplace, который в остальном работает точно так же:
1 2 |
$str = 'rRr'; echo str_ireplace('r', '!', $str); // !!! |
Конечно же, это простые задачи и уже для более сложных придется все-таки обращаться к помощи регулярных выражений. Но если мы можем обойтись без тяжелой артиллерии, тогда зачем палить из пушки по воробьям?
На этом у меня все. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!