Групи при търсене с регулярни изрази в PHP
Нека имаме някакъв низ, съдържащ домейн:
<?php
$str = 'eee site.ru bbb';
?>
Нека намерим този домейн и го разделим на части: отделяме името на домейна от неговата зона. За целта ще използваме специални групи на регулярните изрази.
Групите представляват елементи от масив, в които могат да се сложат части от намереното от регулярния израз. В нашия случай в първата група можем да сложим името на домейна, а във втората - неговата зона.
Нека направим това. Първо, нека напишем регулярен израз, който намира домейна в низа:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Сега в нашия регулярен израз нека обозначим кои части в коя група трябва да попаднат. Това се прави с помощта на кръгли скоби. Нека оцветим с тях частта от регулярния израз, която търси името на домейна, и частта, която търси домейнната зона:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Сега във функцията preg_match като
трети параметр ще посочим променлива (име каквото и да е):
<?php
preg_match($reg, $str, $res);
?>
В посочената променлива ще попадне масив с намерените групи. При това в нулевия елемент на масива ще лежи намереният низ, в първия елемент - първата група, във втория елемент - втората група и така нататък:
<?php
preg_match($reg, $str, $res);
var_dump($res); // ще изведе ['site.ru', 'site', 'ru']
?>
Даден е низ с дата:
<?php
$str = '2025-12-31';
?>
Сложете годината, месеца и деня в отделни групи.
Даден е низ с име на файл:
<?php
$str = 'index.html';
?>
Сложете името на файла и неговото разширение в отделни групи.