PHP Academy · Урок

Поиск совпадений с preg_match

Проверяйте строки на соответствие шаблонам и захватывайте группы

Урок 2 из 413 шагов

«Поиск совпадений с preg_match» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Сигнатура preg_match()

preg_match($pattern, $subject, &$matches) возвращает 1, если шаблон найден, 0, если он не найден, или false при ошибке.

Простая проверка совпадения

Используйте preg_match как логическую проверку — возвращаемое значение 1 означает, что совпадение найдено.

<?php
$email = "user@example.com";
if (preg_match('/\w+@\w+\.\w+/', $email)) {
    echo "Looks like an email";
}

Группы захвата с помощью $matches

$matches[0] содержит полное совпадение; $matches[1], $matches[2] и далее — группы захвата.

<?php
preg_match('/^(\w+)\s(\w+)$/', "John Smith", $m);
echo $m[1]; // "John"
echo $m[2]; // "Smith"

Именованные захваты

Используйте (?P<name>...) для именованных групп захвата — доступ к ним осуществляется через $matches["name"].

<?php
preg_match('/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
           '2025-06-15', $m);
echo $m['year'];  // 2025

Параметр смещения

Четвёртый параметр указывает, с какого места в строке начинать сопоставление (смещение в байтах).

<?php
preg_match('/\d+/', 'abc123def456', $m, 0, 3);
echo $m[0]; // "123"

PREG_OFFSET_CAPTURE

Получите и значение совпадения, и его смещение в байтах.

<?php
preg_match('/\d+/', "price: 42 USD", $m, PREG_OFFSET_CAPTURE);
echo $m[0][0]; // "42"
echo $m[0][1]; // 7 (byte offset)

preg_match_all()

preg_match_all() находит все совпадения и возвращает их количество.

<?php
$html = '<a href="a.com">A</a> <a href="b.com">B</a>';
preg_match_all('/<a href="([^"]+)">/', $html, $m);
print_r($m[1]); // ["a.com", "b.com"]

Пример проверки адреса электронной почты

Практический шаблон регулярного выражения для адреса электронной почты:

<?php
function isEmail(string $s): bool {
    return (bool) preg_match(
        '/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/',
        $s
    );
}

Проверка номера телефона

Проверьте международные номера телефонов:

<?php
preg_match('/^\+?[1-9]\d{7,14}$/', '+1234567890', $m);

Обработка ошибок

Если шаблон недопустим, preg_match() возвращает false. Проверьте это с помощью === false, а для получения подробностей используйте preg_last_error().

Совет по производительности

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

Когда не следует использовать регулярные выражения

Для структурированных данных в PHP есть специальные функции: filter_var(FILTER_VALIDATE_EMAIL), parse_url() — предпочитайте их регулярным выражениям, написанным вручную.

Быстрая проверка

Что содержит $matches[0] после вызова preg_match?

Можно начать бесплатно

Изучай PHP с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
49
Уроки
195

Часто задаваемые вопросы

Урок «Поиск совпадений с preg_match» бесплатный?

Да — полный текст урока «Поиск совпадений с preg_match» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Поиск совпадений с preg_match»?

Проверяйте строки на соответствие шаблонам и захватывайте группы Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Поиск совпадений с preg_match»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы синтаксиса регулярных выражений
  2. Поиск совпадений с preg_match
  3. Замена текста с помощью preg_replace
  4. Разделение строк и практические шаблоны
← Назад к PHP Academy