⊗ppPmRgNP 255 of 447 menu

Gruppi con nome nelle espressioni regolari di PHP

Supponiamo di voler scomporre una data in giorno, mese e anno utilizzando preg_match. Useremo a questo scopo i gruppi di cattura:

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

Come puoi vedere, il risultato è un array in cui l'elemento con indice zero contiene l'intera data, il primo l'anno, il secondo il mese, il terzo il giorno.

A volte, tuttavia, sarebbe comodo ottenere il contenuto dei gruppi sotto forma di array associativo. Cioè, nel nostro caso, sarebbe bello ottenere un array come questo:

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

A questo scopo, nelle espressioni regolari esiste una sintassi speciale. Eccola: (?<name>pattern), dove pattern è l'espressione regolare, e name è il nome del gruppo.

Riscriviamo la nostra espressione regolare per la data utilizzando i gruppi con nome:

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

Il risultato sarà un array associativo in cui le chiavi sono i nomi dei gruppi, e i valori sono il loro contenuto:

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

In realtà, nell'array risultante, i valori dei gruppi saranno accessibili sia per nome che per numero d'ordine. Cioè, ad esempio, l'anno sarà accessibile con la chiave 'year' e con il numero 1, il mese con la chiave 'month' e con il numero 2 e così via:

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

I gruppi con nome descritti hanno anche alcune sintassi alternative: (?P<name>pattern) e (?'name'pattern).

Data una stringa con un orario:

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

Inserisci ore, minuti e secondi in gruppi con nome separati.

Scrivi una funzione che, nell'array risultato, rimuova tutti i gruppi numerati, lasciando solo quelli con nome.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta