Grupos de captura en búsquedas con expresiones regulares en PHP
Supongamos que tenemos una cadena que contiene un dominio:
<?php
$str = 'eee site.ru bbb';
?>
Encontremos este dominio y dividámoslo en partes: separaremos el nombre del dominio de su zona. Para esto usaremos los grupos de captura de las expresiones regulares.
Los grupos de captura representan elementos del array, en los cuales se pueden colocar partes encontradas por la expresión regular. En nuestro caso, en el primer grupo de captura podemos colocar el nombre del dominio, y en el segundo - su zona.
Hagámoslo. Para empezar escribamos la expresión regular, que encuentra el dominio en la cadena:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Ahora en nuestra expresión regular indiquemos, qué partes deben ir a qué grupo de captura. Esto se hace mediante paréntesis. Marquemos con ellos la parte de la expresión regular que busca el nombre del dominio, y la parte que busca la zona del dominio:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Ahora en la función preg_match como
tercer parámetro indicaremos una variable (cualquier nombre):
<?php
preg_match($reg, $str, $res);
?>
En la variable indicada caerá un array con los grupos de captura encontrados. Al mismo tiempo, en el elemento cero del array estará la cadena encontrada, en el primer elemento - el primer grupo de captura, en el segundo elemento - el segundo grupo de captura y así sucesivamente:
<?php
preg_match($reg, $str, $res);
var_dump($res); // mostrará ['site.ru', 'site', 'ru']
?>
Se da una cadena con una fecha:
<?php
$str = '2025-12-31';
?>
Coloque el año, mes y día en grupos de captura separados.
Se da una cadena con un nombre de archivo:
<?php
$str = 'index.html';
?>
Coloque el nombre del archivo y su extensión en grupos de captura separados.