Перейти к содержимому

PHP регулярные выражения

PHP — это мощный серверный язык скриптов, который позволяет разработчикам создавать динамические и интерактивные веб-страницы. Одна из его самых полезных функций — поддержка регулярных выражений, которые предоставляют способ поиска шаблонов в строках.

Что такое регулярные выражения

Регулярные выражения — это последовательности символов, определяющие шаблон поиска. Они используются для сопоставления и обработки строк и могут быть мощным инструментом для проверки вводимых данных пользователем, поиска по тексту и многого другого.

Как работают регулярные выражения в PHP

В PHP поддержка регулярных выражений осуществляется через семейство функций preg_. Эти функции позволяют выполнять различные операции с регулярными выражениями, включая поиск, замену и разделение строк.

Основные функции preg_

ФункцияОписание
preg_match()Ищет совпадение в строке, возвращает true или false
preg_match_all()Ищет все совпадения в строке, возвращает количество найденных совпадений
preg_replace()Ищет совпадения в строке и заменяет их на указанную строку
preg_split()Разделяет строку на массив на основе шаблона регулярного выражения

Основы регулярных выражений в PHP

Базовый синтаксис регулярного выражения в PHP выглядит следующим образом:

Синтаксис регулярного выражения в PHP

php
/pattern/modifiers

Где pattern — это последовательность символов для поиска, а modifiers — необязательные буквы, изменяющие поведение регулярного выражения. Некоторые из наиболее часто используемых модификаторов в PHP включают:

  • i: Делает регулярное выражение регистронезависимым
  • m: Рассматривает строку как несколько строк
  • s: Рассматривает строку как одну строку
  • u: Рассматривает строку как закодированную в UTF-8

Регулярное выражение в PHP для замены текста

php
<?php

$text = "Hello World";
$result = preg_replace("/World/", "PHP", $text);
echo $result; // Outputs: Hello PHP

?>

Использование регулярных выражений PHP для проверки ввода пользователя

Одним из самых распространенных способов использования регулярных выражений в PHP является проверка вводимых пользователем данных. Например, вы можете использовать регулярное выражение, чтобы убедиться, что введенный пользователем адрес электронной почты имеет правильный формат. Следующий код демонстрирует, как это можно сделать:

Регулярное выражение в PHP для проверки формата введенного адреса электронной почты

php
<?php

$email = "[email protected]";
if (preg_match("/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/", $email)) {
    echo "Valid email address";
} else {
    echo "Invalid email address";
}

?>

Примечание: Хотя это регулярное выражение работает для базовой проверки, PHP предоставляет встроенную функцию filter_var($email, FILTER_VALIDATE_EMAIL) для более надежной проверки электронной почты, соответствующей стандартам RFC.

Продвинутые техники регулярных выражений в PHP

Хотя основы регулярных выражений в PHP просты, существует множество продвинутых техник, которые помогут вам вывести свои навыки на новый уровень. К ним относятся:

  • Использование групп захвата для извлечения определенных частей совпадения
  • Использование групп без захвата для объединения шаблонов
  • Использование lookahead и lookbehind утверждений для сопоставления шаблонов на основе того, что находится перед ними или после них
  • Использование альтернатив для сопоставления нескольких шаблонов
  • Использование квантификаторов для сопоставления определенного количества повторений шаблона

Регулярное выражение в PHP с группами захвата

php
<?php

$text = "Order #12345 placed on 2023-10-01";
if (preg_match("/Order #(\d+)/", $text, $matches)) {
    echo "Order ID: " . $matches[1]; // Outputs: Order ID: 12345
}

?>

Заключение

Регулярные выражения в PHP — это мощный инструмент, который поможет вам решать широкий спектр задач. Независимо от того, проверяете ли вы ввод пользователя, ищете текст по шаблону или выполняете сложные манипуляции со строками, регулярные выражения являются неотъемлемой частью набора инструментов разработчика на PHP.

Практика

Каково назначение регулярных выражений в PHP, согласно указанной статье?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.