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

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

←→
↑