Zachytávání skupin při vyhledávání pomocí regulárních výrazů v PHP
Předpokládejme, že máme řetězec obsahující doménu:
<?php
$str = 'eee site.ru bbb';
?>
Pojďme tuto doménu najít a rozdělit ji na části: oddělíme název domény od její zóny. K tomu použijeme speciální zachytávací skupiny regulárních výrazů.
Zachytávací skupiny představují prvky pole, do kterých lze uložit části textu nalezeného regulárním výrazem. V našem případě můžeme do první skupiny uložit název domény a do druhé - její zónu.
Pojďme to udělat. Nejprve napíšeme regulární výraz, který najde doménu v řetězci:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Nyní v našem regulárním výrazu označme, které části mají být zachyceny do kterých skupin. To se provádí pomocí kulatých závorek. Pojďme jimi oddělit část regulárního výrazu, která hledá název domény, a tu část, která hledá doménovou zónu:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Nyní ve funkci preg_match jako
třetí parametr uvedeme proměnnou (libovolného názvu):
<?php
preg_match($reg, $str, $res);
?>
Do zadané proměnné bude uloženo pole s nalezenými skupinami. Přitom v nultém prvku pole bude ležet nalezený řetězec, v prvním prvku - první zachytávací skupina, ve druhém prvku - druhá zachytávací skupina a tak dále:
<?php
preg_match($reg, $str, $res);
var_dump($res); // vypíše ['site.ru', 'site', 'ru']
?>
Daný řetězec s datem:
<?php
$str = '2025-12-31';
?>
Uložte rok, měsíc a den do samostatných zachytávacích skupin.
Daný řetězec s názvem souboru:
<?php
$str = 'index.html';
?>
Uložte název souboru a jeho příponu do samostatných zachytávacích skupin.