Skupiny pri vyhľadávaní pomocou regulárnych výrazov v PHP
Majme nejaký reťazec obsahujúci doménu:
<?php
$str = 'eee site.ru bbb';
?>
Nájdime túto doménu a rozdeľme ju na časti: oddelíme názov domény od jej zóny. Na to použijeme špeciálne skupiny regulárnych výrazov.
Skupiny predstavujú prvky poľa, do ktorých je možné uložiť časti nájdené regulárnym výrazom. V našom prípade do prvej skupiny môžeme uložiť názov domény a do druhej - jej zónu.
Urobme to. Najprv napíšme regulárny výraz, ktorý nájde doménu v reťazci:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Teraz v našom regulárnom výraze označme, ktoré časti majú patriť do ktorej skupiny. To sa robí pomocou okrúhlych zátvoriek. Označme imi časť regulárneho výrazu, ktorá vyhľadáva názov domény, a časť, ktorá vyhľadáva doménovú zónu:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Teraz vo funkcii preg_match ako
tretí parameter uvedieme premennú (názov ľubovoľný):
<?php
preg_match($reg, $str, $res);
?>
Do zadanej premennej sa uloží pole s nájdenými skupinami. Pričom v nultom prvku poľa bude ležať nájdený reťazec, v prvom prvku - prvá skupina, v druhom prvku - druhá skupina a tak ďalej:
<?php
preg_match($reg, $str, $res);
var_dump($res); // vypíše ['site.ru', 'site', 'ru']
?>
Daný reťazec s dátumom:
<?php
$str = '2025-12-31';
?>
Uložte rok, mesiac a deň do samostatných skupín.
Daný reťazec s názvom súboru:
<?php
$str = 'index.html';
?>
Uložte názov súboru a jeho príponu do samostatných skupín.