Регулярные выражения — мощный инструмент для сопоставления с образцом и манипулирования строками. В PHP функция preg_matchпозволяет выполнять сопоставление регулярного выражения с заданной строкой. В этой статье мы рассмотрим различные методы и приемы, которые можно использовать с помощью preg_matchв PHP, а также приведем примеры кода.
- Основное использование:
Функцияpreg_matchищет в строке шаблон и возвращает true, если совпадение найдено, и false в противном случае. Вот простой пример:
$string = "Hello, World!";
$pattern = "/Hello/";
if (preg_match($pattern, $string)) {
echo "Match found!";
} else {
echo "No match found.";
}
- Сопоставление с модификаторами.
Модификаторы используются для изменения поведения шаблона регулярного выражения. Функцияpreg_matchпозволяет указать модификаторы в качестве необязательного третьего параметра. Например:
$string = "Hello, World!";
$pattern = "/hello/i"; // Case-insensitive match
if (preg_match($pattern, $string)) {
echo "Match found!";
} else {
echo "No match found.";
}
- Извлечение совпадений.
Вы можете извлечь определенные совпадения из строки, используя группы захвата в регулярных выражениях. Группы захвата определяются с помощью круглых скобок. Вот пример извлечения доменного имени из URL-адреса:
$url = "https://www.example.com";
$pattern = "/https:\/\/(www\.)?([a-zA-Z0-9-]+)\.[a-zA-Z]{2,}/";
preg_match($pattern, $url, $matches);
$domain = $matches[2];
echo $domain; // Output: example
- Возврат совпадающих групп.
Функцияpreg_matchтакже может использоваться для прямого извлечения совпадающих групп. Если предоставить дополнительный параметр, массив будет заполнен совпадающими группами. Например:
$string = "Name: John Doe, Age: 25";
$pattern = "/Name: (\w+), Age: (\d+)/";
preg_match($pattern, $string, $matches);
$name = $matches[1];
$age = $matches[2];
echo "Name: " . $name . ", Age: " . $age; // Output: Name: John Doe, Age: 25
- Использование функций обратного вызова.
Функция PHPpreg_matchтакже позволяет использовать функцию обратного вызова для более сложного сопоставления и манипуляций. Функция обратного вызова вызывается для каждого найденного совпадения. Вот пример:
$string = "Hello, World!";
$pattern = "/\b(\w+)\b/";
preg_match($pattern, $string, $matches);
$callback = function ($match) {
return strtoupper($match[1]);
};
$result = preg_replace_callback($pattern, $callback, $string);
echo $result; // Output: HELLO, WORLD!