Grupy przechwytujące przy wyszukiwaniu za pomocą wyrażeń regularnych w PHP
Załóżmy, że mamy pewien ciąg znaków zawierający domenę:
<?php
$str = 'eee site.ru bbb';
?>
Znajdźmy tę domenę i podzielmy ją na części: oddzielmy nazwę domeny od jej strefy. W tym celu użyjemy specjalnych grup przechwytujących wyrażeń regularnych.
Grupy przechwytujące reprezentują elementy tablicy, do których można umieścić części znalezione przez wyrażenie regularne. W naszym przypadku do pierwszej grupy przechwytującej możemy umieścić nazwę domeny, a do drugiej - jej strefę.
Zróbmy to. Na początku napiszmy wyrażenie regularne, które znajduje domenę w ciągu znaków:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Oznaczmy teraz w naszym wyrażeniu regularnym, które części do których grup przechwytujących powinny trafić. Robimy to za pomocą okrągłych nawiasów. Wydzielmy za ich pomocą część wyrażenia regularnego, która szuka nazwy domeny, oraz tę część, która szuka strefy domeny:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Teraz w funkcji preg_match jako
trzeci parametr wskażmy zmienną (dowolna nazwa):
<?php
preg_match($reg, $str, $res);
?>
Do wskazanej zmiennej trafi tablica ze znalezionymi grupami przechwytującymi. Przy tym w zerowym elemencie tablicy będzie znajdował się znaleziony ciąg znaków, w pierwszym elemencie - pierwsza grupa przechwytująca, w drugim elemencie - druga grupa przechwytująca i tak dalej:
<?php
preg_match($reg, $str, $res);
var_dump($res); // wyświetli ['site.ru', 'site', 'ru']
?>
Dany jest ciąg znaków z datą:
<?php
$str = '2025-12-31';
?>
Umieść rok, miesiąc i dzień w oddzielnych grupach przechwytujących.
Dany jest ciąg znaków z nazwą pliku:
<?php
$str = 'index.html';
?>
Umieść nazwę pliku i jego rozszerzenie w oddzielnych grupach przechwytujących.