⊗ppPmRgNP 255 of 447 menu

Capturas nomeadas em expressões regulares do PHP

Suponha que usando preg_match nós queiramos dividir uma data em dia, mês e ano. Vamos usar capturas para isso:

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

Como você pode ver, como resultado obtemos um array, no qual no elemento zero estará a data completa, no primeiro - o ano, no segundo - o mês, no terceiro - o dia.

Às vezes, porém, seria conveniente obter o conteúdo das capturas na forma de um array associativo. Ou seja, no nosso caso, seria bom obter um array como este:

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

Para isso, existe uma sintaxe especial em expressões regulares. Aqui está: (?<name>pattern), onde pattern - é a expressão regular, e name - é o nome da captura.

Vamos reescrever nossa expressão regular para a data usando capturas nomeadas:

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

Como resultado, teremos um array associativo, no qual as chaves serão os nomes das capturas, e os valores - o que foi capturado por elas:

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

Na verdade, no array com o resultado, os valores das capturas estarão disponíveis tanto pelo nome quanto pelo número ordinal. Ou seja, por exemplo, o ano estará disponível pela chave 'year' e pelo número 1, o mês - pela chave 'month' e pelo número 2 e assim por diante:

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

As capturas nomeadas descritas têm mais algumas sintaxes alternativas: (?P<name>pattern) e (?'name'pattern).

Dada uma string com um horário:

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

Coloque as horas, minutos e segundos em capturas nomeadas separadas.

Escreva uma função que, no array com o resultado, remova todas as capturas numeradas, deixando apenas as nomeadas.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar