Регулярные выражения — это мощный инструмент для работы с текстом. Они позволяют находить, проверять и извлекать фрагменты строк по заданному шаблону. В этом уроке мы сосредоточимся на одной из ключевых функций для работы с регулярными выражениями в PHP — `preg_match()`. Мы начнем с самых азов: научимся искать простое слово в строке. Затем перейдем к более сложным вещам: изучим специальные символы (метасимволы), научимся задавать количество повторений (квантификаторы) и извлекать найденные части строки с помощью захватывающих групп. Задания помогут вам понять, как строить шаблоны и анализировать результат работы функции.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Функция preg_match().
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Основы preg_match
Заполните пропуски, чтобы найти слово "PHP" в заданной строке. Вам нужно указать имя функции, шаблон для поиска и переменную, в которой будет осуществляться поиск.
<?php
$string = "I love learning PHP!";
$pattern = "/PHP/";
// Используйте функцию для поиска шаблона в строке
if (input1S(input2S, input3S)) {
echo "Найдено совпадение!";
} else {
echo "Совпадений не найдено.";
}Что возвращает функция?
Функция `preg_match()` возвращает количество найденных совпадений. Так как она прекращает поиск после первого совпадения, это будет либо 1 (найдено), либо 0 (не найдено). Проанализируйте код и укажите, какое значение будет в переменной `$result`.
<?php
$text = "The quick brown fox jumps over the lazy dog.";
$pattern = "/fox/";
$result = preg_match($pattern, $text);
// Какое значение будет в переменной $result?Сопоставьте метасимволы и их значения
Регулярные выражения используют специальные символы (метасимволы) для обозначения классов символов. Сопоставьте метасимвол из левой колонки с его правильным описанием из правой.
Ошибка в ограничителях шаблона
Каждое регулярное выражение в PHP должно быть заключено в пару одинаковых символов-ограничителей (например, `/.../` или `#...#`). В данном коде ограничители не совпадают. Найдите и исправьте ошибку.
<?php$string = "Product ID: 456";// Ищем последовательность цифр$pattern = '/\d+#'; // Здесь ошибка if (preg_match($pattern, $string)) { echo "ID найден!";}Что найдут квантификаторы?
Квантификаторы `*`, `+` и `?` указывают, сколько раз должен повторяться предыдущий символ. Проанализируйте код и выберите, что будет выведено на экран.
<?php
$text = "Is this good or goood?";
preg_match('/go+d/', $text, $matches);
echo $matches[0];Извлечение данных с помощью групп
Соберите скрипт для извлечения имени пользователя из строки "user: nickname". Используйте захватывающую группу (скобки) для того, чтобы получить только само имя, без "user: ". Отбросьте лишние и неверные строки.
$text = "user: admin";preg_match('/user: (\w+)/', $text, $matches);echo $matches[1];<?phpecho $matches[0];preg_match_all('/user: (\w+)/', $text, $matches);Проверка формата с помощью якорей
Используя "якоря" из банка, составьте регулярное выражение для точной проверки, что строка является шестизначным числом, и ничем иным. Перетащите нужные символы в пропуски.
<?php
$pincode = "902100";
// Шаблон должен проверять, что вся строка - это 6 цифр
$pattern = "/" . input1S . "\d{6}" . input2S . "/";
if (preg_match($pattern, $pincode)) {
echo "Формат верный";
} else {
echo "Формат неверный";
}Поиск без учета регистра
Чтобы `preg_match` не различал строчные и прописные буквы, используется модификатор `i`. Он ставится после второго ограничителя. Предскажите результат выполнения этого кода.
<?php
$text = "This is a Test string.";
$pattern = "/test/i";
echo preg_match($pattern, $text);