⊗ppPmRgNP 255 of 447 menu

Benannte Gruppen in PHP Regex

Nehmen wir an, wir möchten mit preg_match ein Datum in Tag, Monat und Jahr aufteilen. Wir verwenden dafür Gruppen:

<?php $str = '2025-10-29'; $reg = '#(\d{4})-(\d{2})-(\d{2})#'; preg_match($reg, $str, $match); var_dump($match); // gibt aus ['2025-10-29', '2025', '10', '29'] ?>

Wie Sie sehen, erhalten wir als Ergebnis ein Array, in dem sich das gesamte Datum im nullten Element befindet, im ersten - das Jahr, im zweiten - der Monat, im dritten - der Tag.

Manchmal wäre es jedoch praktisch, den Inhalt der Gruppen als assoziatives Array zu erhalten. Das heißt, in unserem Fall wäre es schön, ein solches Array zu bekommen:

[ 'year' => '2025', 'month' => '10', 'day' => '29' ]

Dafür gibt es in regulären Ausdrücken eine spezielle Syntax. Hier ist sie: (?<name>pattern), wo pattern - der reguläre Ausdruck ist und name - der Name der Gruppe.

Schreiben wir unseren regulären Ausdruck für das Datum mit benannten Gruppen um:

<?php $str = '2025-10-29'; $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#'; preg_match($reg, $str, $match); var_dump($match); ?>

Als Ergebnis erhalten wir ein assoziatives Array, in dem die Schlüssel die Gruppennamen sind und die Werte das, was in sie hineingepasst hat:

[ 'year' => '2025', 'month' => '10', 'day' => '29', ]

Tatsächlich sind die Werte der Gruppen im Ergebnisarray sowohl über ihren Namen als auch über ihre numerische Position verfügbar. Das heißt, zum Beispiel ist das Jahr sowohl unter dem Schlüssel 'year' als auch unter der Nummer 1 verfügbar, der Monat - unter dem Schlüssel 'month' und unter der Nummer 2 und so weiter:

[ 'year' => '2025', 'month' => '10', 'day' => '29', 1 => '2025', 2 => '10', 3 => '29' ]

Die beschriebenen benannten Gruppen haben noch einige alternative Syntaxformen: (?P<name>pattern) und (?'name'pattern).

Gegeben ist ein String mit einer Uhrzeit:

<?php $str = '12:59:59'; ?>

Speichern Sie Stunden, Minuten und Sekunden in separate benannte Gruppen.

Schreiben Sie eine Funktion, die im Ergebnisarray alle numerierten Gruppen löscht und nur die benannten übrig lässt.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen