Регулярные выражения PHP (PCRE)
Регулярное выражение описывает шаблон сопоставления строк. Его можно использовать для проверки, содержит ли строка определённую подстроку, для замены совпавших подстрок или для извлечения из строки подстрок, соответствующих определённым условиям.
Для получения дополнительной информации о регулярных выражениях, пожалуйста, обратитесь к нашему:Регулярные выражения - Учебник。
В PHP регулярные выражения в основном используются через набор встроенных функций, наиболее часто используемые из которых:
preg_match(): Ищет соответствующий шаблон в строке и возвращает только первое совпадение.preg_match_all(): Ищет соответствующий шаблон в строке и возвращает все совпадения.preg_replace(): Ищет соответствующий шаблон в строке, а затем заменяет его.
Функция preg_match()
Функция preg_match() используется для поиска совпадающего шаблона в строке и возвращает только первое совпадение.
preg_match(pattern, subject, matches)
Описание параметра:
- pattern: Шаблон регулярного выражения.
- subject: Строка для поиска.
- matches: Необязательный параметр, используемый для сохранения результата совпадения.
Пример
$str = "Hello, World!";
$pattern = "/Hello/";
if (preg_match($pattern, $str, $matches)) {
echo "Match successful!" . PHP_EOL;
print_r($matches);
} else {
echo "No match found!";
}
?>
Вывод вышеприведённого кода:
匹配成功!
Array
(
[0] => Hello
)
Функция preg_match_all()
Функция preg_match_all() используется для поиска совпадающего шаблона в строке и возвращает все совпадения.
preg_match_all(pattern, subject, matches)
Описание параметра:
- Используется для поиска совпадающего шаблона в строке и возврата всех совпадений.
pattern: Шаблон регулярного выражения.subject: Строка для поиска.matches: Массив, используемый для хранения всех результатов совпадений.
Пример
$str = "The cat and the hat";
$pattern = "/[aeiou]/";
if (preg_match_all($pattern, $str, $matches)) {
echo "Совпадающие гласные: " . implode(", ", $matches[0]);
} else {
echo "No match found!";
}
?>
Вывод вышеприведённого кода:
匹配的元音字母: e, a, a, e, a
Функция preg_replace()
Функция preg_replace() используется для поиска совпадающего шаблона в строке с последующей его заменой.
preg_replace(pattern, replacement, subject)
Описание параметра:
- pattern: Шаблон регулярного выражения.
- replacement: Строка замены.
- subject: Строка для поиска.
Пример
$str = "I love PHP";
$pattern = "/PHP/";
$replacement = "EXAMPLE";
$new_str = preg_replace($pattern, $replacement, $str);
echo "Строка после замены: " . $new_str;
?>
Вывод вышеприведённого кода:
替换后的字符串: I love EXAMPLE
Функции PCRE
В PHP мы можем использовать расширение PCRE для сопоставления строковых шаблонов.
| Функция | Описание |
|---|---|
| preg_filter | Выполняет поиск и замену по регулярному выражению |
| preg_grep | Возвращает элементы массива, соответствующие шаблону |
| preg_last_error | Возвращает код ошибки, сгенерированный последним выполнением регулярного выражения PCRE |
| preg_match_all | Выполняет глобальное сопоставление с регулярным выражением |
| preg_match | Выполняет сопоставление с регулярным выражением |
| preg_quote | Экранирует символы регулярного выражения |
| preg_replace_callback_array | Выполняет поиск и замену по регулярному выражению с использованием callback-функции |
| preg_replace_callback | Выполняет поиск и замену по регулярному выражению с использованием callback-функции |
| preg_replace | Выполняет поиск и замену по регулярному выражению |
| preg_split | Разбивает строку с помощью регулярного выражения |
Константы PREG
| Константа | Описание | С какой версии |
|---|---|---|
PREG_PATTERN_ORDER |
Результаты упорядочены по "шаблону", используется только для preg_match_all(), т.е. $matches | с |
PREG_SET_ORDER |
Результаты упорядочены по "набору", используется только для preg_match_all(), т.е. $matches | |
PREG_OFFSET_CAPTURE |
См.PREG_SPLIT_OFFSET_CAPTUREописание. |
4.3.0 |
PREG_SPLIT_NO_EMPTY |
Этот флаг указывает preg_split() возвращать только непустые части. | |
PREG_SPLIT_DELIM_CAPTURE |
Этот флаг указывает preg_split() также захватывать содержимое, совпавшее с выражениями в круглых скобках. | 4.0.5 |
PREG_SPLIT_OFFSET_CAPTURE |
Если этот флаг установлен, также будет возвращено смещение каждого вхождения совпавшей подстроки. Обратите внимание, что это изменяет значения в возвращаемом массиве, где каждый элемент представляет собой массив, состоящий из совпавшей подстроки в качестве элемента 0 и её смещения относительно целевой строки в качестве элемента 1. Этот флаг можно использовать только с preg_split(). | 4.3.0 |
PREG_NO_ERROR |
Возвращается preg_last_error(), когда нет ошибки. | 5.2.0 |
PREG_INTERNAL_ERROR |
Возвращается preg_last_error() при внутренней ошибке PCRE. | 5.2.0 |
PREG_BACKTRACK_LIMIT_ERROR |
Возвращается preg_last_error() при превышении лимита возвратов. | 5.2.0 |
PREG_RECURSION_LIMIT_ERROR |
Возвращается preg_last_error() при превышении лимита рекурсии. | 5.2.0 |
PREG_BAD_UTF8_ERROR |
Возвращается preg_last_error(), если последняя ошибка была вызвана некорректными данными UTF-8 (доступно только при работе с регулярными выражениями в режиме UTF-8). | 5.2.0 |
PREG_BAD_UTF8_OFFSET_ERROR |
Возвращается preg_last_error(), если смещение не соответствует допустимому коду UTF-8 (доступно только при работе с регулярными выражениями в режиме UTF-8). | 5.3.0 |
PCRE_VERSION |
Номер версии PCRE и дата выпуска (например, "7.0 18-Dec-2006"). | 5.2.4 |