Регулярные выражения PHP: preg_match, preg_split, preg_replace
3 марта 2020 PHP
Регулярные выражения — это мощный алгоритм сопоставления с образцом, который может быть выполнен в одном выражении. Регулярные выражения используют арифметические операторы, такие как (+, -, ^) для создания сложных выражений. Регулярные выражения помогают вам выполнять такие задачи, как проверка адресов электронной почты, IP-адресов и т. д.
Содержание
Зачем использовать регулярные выражения
- Регулярные выражения упрощают идентификацию шаблонов в строковых данных, вызывая одну функцию. Это экономит нам время написания кода.
- При проверке ввода пользователем данных, таких как адрес электронной почты, доменные имена, номера телефонов, IP-адреса.
- Выделение ключевых слов в результатах поиска.
- При создании пользовательского шаблона HTML. Регулярные выражения могут использоваться для идентификации тегов шаблона и замены их фактическими данными.
Регулярные выражения в PHP
PHP имеет встроенные функции, которые позволяют нам работать с регулярными выражениямии. Давайте теперь посмотрим на часто используемые функции регулярных выражений в PHP.
preg_match
— эта функция используется для сопоставления с образцом в строке. Она возвращает истину, если совпадение найдено, и ложь, если совпадение не найдено.preg_split
— эта функция используется для сопоставления с образцом в строке, а затем разбивает результаты в числовой массив.preg_replace
— эта функция используется для сопоставления с образцом строки и затем замены совпадения указанным текстом.
Ниже приведен синтаксис функции регулярного выражения, такой как preg_match
, preg_split
или preg_replace
:
<?php function_name('/pattern/',subject); ?>
«function_name (…)» это либо preg_match
, preg_split
, либо preg_replace
.
«/…/» Косая черта обозначает начало и конец нашего регулярного выражения.
«/ pattern /» — это шаблон, который нам нужен.
«subject» — текстовая строка, с которой нужно сопоставить.
Давайте теперь посмотрим на практические примеры, которые реализуют вышеупомянутые функции регулярных выражений в PHP.
PHP preg_match
В первом примере функция preg_match используется для простого сопоставления с образцом слова it-blog в заданном URL-адресе.
Код ниже показывает реализацию для приведенного выше примера.
<?php $my_url = "www.it-blog.ru"; if (preg_match("/it-blog/", $my_url)) { echo "Строка $my_url содержит it-blog"; } else { echo "Строка $my_url не содержит it-blog"; } ?>
Давайте рассмотрим часть кода, отвечающую за наш вывод «preg_match (‘/ it-blog /’, $ my_url)»
preg_match (…) — это функция регулярного выражения PHP.
«/it-blog/» — это шаблон регулярного выражения для сопоставления.
«$my_url» — это переменная, содержащая текст для сопоставления.
PHP preg_split
Давайте теперь посмотрим на другой пример, который использует функцию preg_split.
Мы возьмем строковую фразу и создадим из неё массив по шаблону: элемент/пробел.
Текстовая строка для использования в этом примере — «Я люблю регулярные выражения».
Код ниже иллюстрирует реализацию приведенного выше примера.
<?php $my_text="Я люблю регулярные выражения"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
PHP preg_replace
Давайте теперь посмотрим на функцию preg_replace
, которая выполняет сопоставление с шаблоном, а затем заменяет шаблон чем-то другим.
Код ниже ищет слово it-blog в строке.
Он заменяет слово «it-blog» словом « it-blog», окруженным кодом CSS, который выделяет цвет фона.
<?php $text = "Статьи по веб-программированию. it-blog.ru"; $text = preg_replace("/it-blog.ru/", '<span style="background:yellow">it-blog.ru</span>', $text); echo $text; ?>
Метасимволы
В приведенных выше примерах использовались очень простые шаблоны. Метасимволы позволяют нам выполнять более сложные сопоставления с образцом, например проверять правильность адреса электронной почты. Давайте теперь посмотрим на часто используемые метасимволы.
Метасимвол | Описание | Пример |
---|---|---|
. | Соответствует любому отдельному символу, кроме новой строки | /./ соответствует всему, что имеет один символ |
^ | Соответствует началу или строке/исключает символы | /^PH/ соответствует любой строке, начинающейся с PH |
$ | Соответствует шаблону в конце строки | /ru$/ соответствует it-blog.ru и т.д. |
* | Соответствует любому нулю (0) или более символов | /com*/ соответствует computer, communication и т. д. |
+ | Требуется, чтобы предшествующие символы появлялись хотя бы раз | /yah+oo/ соответствует yahoo |
\ | Используется для экранирования метасимволов | /yahoo+\.com/ трактует точку как буквальное значение |
[…] | Символы внутри скобках | /[abc]/ соответствует abc |
a-z | Соответствует строчным буквам | /a-z/ соответствует cool, happy и т.д. |
A-Z | Соответствует заглавным буквам | /A-Z/ соответствует WHAT, HOW, WHY и т.д. |
0-9 | Соответствует любому числу от 0 до 9 | /0-4/ соответствует 0,1,2,3,4 |
Приведенный выше список содержит только наиболее часто используемые метасимволы в регулярных выражениях.
Давайте теперь рассмотрим довольно сложный пример, который проверяет действительность адреса электронной почты.
<?php $my_email = "[email protected] "; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email это действительный адрес электронной почты"; } else { echo "$my_email это не действительный адрес электронной почты"; } ?>
Шаблон «[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]»
«/…/» запускает и заканчивает регулярное выражение.
«^ [a-zA-Z0-9 ._-]» соответствует буквам в нижнем или верхнем регистре, числам от 0 до 9 и точкам, подчеркиванию или тире.
«+ @ [a-zA-Z0-9-]» соответствует символу @, за которым следуют строчные или прописные буквы, цифры от 0 до 9 или тире.
«+ . [a-zA-Z.] {2,5} $ /» экранирует точку, используя обратную косую черту, а затем сопоставляет любые буквы в нижнем или верхнем регистре с длиной символов от 2 до 5 в конце строки.
Как видно из приведенного выше примера разбивки, метасимволы очень эффективны, когда речь идет о сопоставлении шаблонов.
Подытожим
- Регулярное выражение — это алгоритм сопоставления с образцом.
- Регулярные выражения очень полезны при выполнении проверок достоверности, создании систем шаблонов HTML, которые распознают теги и т. д.
- PHP имеет встроенные функции, а именно
preg_match
,preg_split
иpreg_replace
, которые поддерживают регулярные выражения. - Метасимволы позволяют нам создавать сложные шаблоны.
Добавить комментарий