Карманы при поиске через регулярки на 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'; ?>

Положите имя файла и его расширение в отдельные карманы.