⊗ppPmRgCPN 257 of 447 menu

Gesamtzahl der Gruppen in PHP Regex

Betrachten wir die folgende Situation. Nehmen wir an, wir haben eine Variable mit einem Jahr, das sich von 1990 bis 2099 ändern kann. Nehmen wir an, wir möchten die letzten beiden Ziffern des Jahres in einer Gruppe erfassen. Schreiben wir den entsprechenden regulären Ausdruck:

<?php $reg = '#19(9\d)|20(\d\d)#'; ?>

Hier erwartet uns jedoch eine Unannehmlichkeit. Die Sache ist die, dass für die Jahre des 20. Jahrhunderts die beiden Ziffern in die erste Gruppe gelangen, und für die Jahre des 21. Jahrhunderts - in die zweite. Sehen wir uns Beispiele an.

Hier ist die erste Variante:

<?php $str = '1991'; preg_match($reg, $str, $res); var_dump($res); // [1 => '91'] ?>

Und hier ist die zweite Variante:

<?php $str = '2021'; preg_match($reg, $str, $res); var_dump($res); // [2 => '21'] ?>

Nehmen wir nun an, wir möchten die gefundenen Jahresziffern in eine Variable schreiben. Es erwartet uns ein Problem, denn wir wissen nicht genau, mit welchem Schlüssel wir die Daten aus der Gruppe entnehmen sollen:

<?php $year = $res[1]; // Schlüssel wird entweder 1 oder 2 benötigt ?>

Man kann das Problem durch eine Bedingung lösen:

<?php if (!empty($res[1])){ $year = $res[1]; } else{ $year = $res[2]; } ?>

Es gibt jedoch eine einfachere Lösung. Man kann den spezial Befehl (?| ) verwenden. Alle Gruppen, die sich innerhalb davon befinden, werden die gleiche Nummer haben.

Lassen Sie uns unseren regulären Ausdruck korrigieren

<?php $reg = '#(?|19(9\d)|20(\d\d))#'; ?>

Und nun wird unser Jahr definitiv in der Gruppe mit der Nummer eins sein:

<?php $year = $res[1]; ?>

Es sind Zeichenketten mit Datumsangaben gegeben, in denen das Jahr sich von 1990 bis 2099 ändern kann:

<?php $arr = [ '31-12-2025', '30-11-1995', '29-10-1990', ]; ?>

Legen Sie für jedes Datum den Tag in die erste Gruppe, den Monat in die zweite und die letzten beiden Ziffern des Jahres - in die dritte.

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