⊗ppPmRgNP 255 of 447 menu

Poches nommées dans les expressions régulières PHP

Supposons qu'avec preg_match nous voulions décomposer une date en jour, mois et année. Utilisons pour cela des poches :

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

Comme vous le voyez, dans le résultat nous obtenons un tableau, dans lequel dans l'élément zéro sera la date entière, dans le premier - l'année, dans le deuxième - le mois, dans le troisième - le jour.

Parfois, cependant, il serait pratique d'obtenir le contenu des poches sous forme de tableau associatif. C'est-à-dire dans notre cas, il serait bien d'obtenir un tableau comme celui-ci :

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

Pour cela, il existe une syntaxe spéciale dans les expressions régulières. La voici : (?<name>pattern), où pattern - est l'expression régulière, et name - est le nom de la poche.

Réécrivons notre expression régulière pour la date avec des poches nommées :

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

En conséquence, nous obtiendrons un tableau associatif, dans lequel les clés seront les noms des poches, et les valeurs - ce qui y est entré :

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

En réalité, dans le tableau de résultat, les valeurs des poches seront accessibles à la fois par leur nom et par leur numéro d'ordre. C'est-à-dire, par exemple, l'année sera accessible par la clé 'year' et par le numéro 1, le mois - par la clé 'month' et par le numéro 2 et ainsi de suite :

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

Les poches nommées décrites ont encore quelques syntaxes alternatives : (?P<name>pattern) et (?'name'pattern).

Une chaîne avec l'heure est donnée :

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

Placez les heures, les minutes et les secondes dans des poches nommées distinctes.

Écrivez une fonction qui, dans le tableau de résultat, supprimera toutes les poches numérotées, en ne laissant que les poches nommées.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser