Összes egyezés zsebekre bontása reguláris kifejezésekkel PHP-ben
A preg_match_all függvény segítségével
az összes talált egyezést zsebekre oszthatjuk.
Nézzük meg, hogyan is történik ez.
Tegyük fel például, hogy van egy domainneveket tartalmazó sztringünk:
<?php
$str = 'site.ru site123.com my-site.net';
?>
Írjunk reguláris kifejezést domainek keresésére, elkülönítve a nevet és a zónát külön zsebekbe:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Az eredmény a függvény harmadik paraméterébe kerül:
<?php
preg_match_all($reg, $str, $res);
var_dump($res);
?>
Ennek eredményeképpen egy kétdimenziós tömböt kapunk. A tömb nulladik elemébe a nulladik zsebek tartalma kerül (azaz ami a teljes reguláris kifejezésnek megfelel), a második elembe az első zsebek tartalma, és így tovább:
<?php
[
['site.ru', 'site123.com', 'my-site.net'],
['site', 'site123', 'my-site'],
['ru', 'com', 'net'],
]
?>
Adott egy dátumokat tartalmazó sztring:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
Találja meg az összes dátumot, különítve el az évet, hónapot és napot külön zsebekbe.