Alle overeenkomsten op zakken via regex in PHP
Met de functie preg_match_all kun je
alle gevonden overeenkomsten verdelen in zakken.
Laten we eens kijken hoe dat gaat.
Stel, we hebben bijvoorbeeld een string met domeinen:
<?php
$str = 'site.ru site123.com my-site.net';
?>
Laten we een reguliere expressie schrijven om het domein te zoeken, waarbij we de naam en zone in aparte zakken plaatsen:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Het resultaat komt in de derde parameter van de functie:
<?php
preg_match_all($reg, $str, $res);
var_dump($res);
?>
Als resultaat krijgen we een tweedimensionale array. In het nulde element van deze array komen de inhoud van de nulde zakken (dus wat onder de hele regex viel), in het tweede element - de inhoud van de eerste zakken, enzovoort:
<?php
[
['site.ru', 'site123.com', 'my-site.net'],
['site', 'site123', 'my-site'],
['ru', 'com', 'net'],
]
?>
Gegeven een string met datums:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
Vind alle datums, waarbij je het jaar, de maand en de dag in aparte zakken plaatst.