Поиск совпадений с preg_match
Проверяйте строки на соответствие шаблонам и захватывайте группы
«Поиск совпадений с 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 — локальная установка не требуется.
Все уроки этого курса
- Основы синтаксиса регулярных выражений
- Поиск совпадений с preg_match
- Замена текста с помощью preg_replace
- Разделение строк и практические шаблоны