Alle Übereinstimmungen in Gruppen mittels regulärer Ausdrücke in PHP
Mit der Funktion preg_match_all kann man
alle gefundenen Übereinstimmungen in Gruppen aufteilen.
Sehen wir uns an, wie das gemacht wird.
Nehmen wir zum Beispiel einen String mit Domains:
<?php
$str = 'site.ru site123.com my-site.net';
?>
Schreiben wir einen regulären Ausdruck, um die Domain zu finden und den Namen und die Zone in separate Gruppen aufzuteilen:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Das Ergebnis landet im dritten Parameter der Funktion:
<?php
preg_match_all($reg, $str, $res);
var_dump($res);
?>
Als Ergebnis erhalten wir ein zweidimensionales Array. In das nullte Element dieses Arrays kommen die Inhalte der nullten Gruppen (also das, was auf den gesamten regulären Ausdruck passt), in das zweite Element - die Inhalte der ersten Gruppen und so weiter:
<?php
[
['site.ru', 'site123.com', 'my-site.net'],
['site', 'site123', 'my-site'],
['ru', 'com', 'net'],
]
?>
Gegeben ist ein String mit Datumsangaben:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
Finden Sie alle Datumsangaben und teilen Sie Jahr, Monat und Tag in separate Gruppen auf.