⊗ppPmRgNP 255 of 447 menu

Bolsillos con nombre en expresiones regulares de PHP

Supongamos que queremos usar preg_match para dividir una fecha en día, mes y año. Usemos para ello bolsillos:

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

Como puedes ver, como resultado obtenemos un array, en el cual en el elemento cero estará la fecha completa, en el primero - el año, en el segundo - el mes, en el tercero - el día.

Sin embargo, a veces sería conveniente obtener el contenido de los bolsillos en forma de array asociativo. Es decir, en nuestro caso estaría bien obtener un array como este:

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

Para ello, en las expresiones regulares existe una sintaxis especial. Esta es: (?<name>pattern), donde pattern - es la expresión regular, y name - es el nombre del bolsillo.

Reescribamos nuestra expresión regular para la fecha usando bolsillos con nombre:

<?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, obtendremos un array asociativo, en el cual las claves serán los nombres de los bolsillos, y los valores - lo que coincidió en ellos:

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

En realidad, en el array con el resultado, los valores de los bolsillos estarán disponibles tanto por nombre como por número de orden. Es decir, por ejemplo, el año estará disponible por la clave 'year' y por el número 1, el mes - por la clave 'month' y por el número 2 y así sucesivamente:

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

Los bolsillos con nombre descritos tienen además varias sintaxis alternativas: (?P<name>pattern) y (?'name'pattern).

Se da una cadena con una hora:

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

Coloque las horas, minutos y segundos en bolsillos con nombre separados.

Escriba una función que, en el array con el resultado, elimine todos los bolsillos numerados, dejando solo los bolsillos con nombre.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar