⊗ppPmRgNP 255 of 447 menu

Nazwane kieszenie w wyrażeniach regularnych PHP

Załóżmy, że za pomocą preg_match chcemy rozbić datę na dzień, miesiąc i rok. Użyjemy do tego kieszeni:

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

Jak widzicie, w wyniku otrzymujemy tablicę, w której w zerowym elemencie będzie cała data, w pierwszym - rok, w drugim - miesiąc, w trzecim - dzień.

Czasami jednak byłoby wygodnie otrzymać zawartość kieszeni w postaci tablicy asocjacyjnej. To znaczy w naszym przypadku byłoby nieźle dostać taką tablicę:

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

W tym celu w wyrażeniach regularnych istnieje specjalna składnia. Oto ona: (?<name>pattern), gdzie pattern - to wyrażenie regularne, a name - to nazwa kieszeni.

Przepiszmy nasze wyrażenie regularne dla daty przez nazwane kieszenie:

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

W rezultacie otrzymamy tablicę asocjacyjną, w której kluczami będą nazwy kieszeni, a wartościami - to, co się w nich znalazło:

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

W rzeczywistości w tablicy z wynikiem wartości kieszeni będą dostępne zarówno po nazwie, jak i po numerze porządkowym. To znaczy, na przykład, rok będzie dostępny po kluczu 'year' i po numerze 1, miesiąc - po kluczu 'month' i po numerze 2 i tak dalej:

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

Opisane nazwane kieszenie mają jeszcze kilka alternatywnych składni: (?P<name>pattern) i (?'name'pattern).

Dany jest ciąg znaków z czasem:

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

Umieść godziny, minuty i sekundy w oddzielnych nazwanych kieszeniach.

Napisz funkcję, która w tablicy z wynikiem usunie wszystkie ponumerowane kieszenie, pozostawiając tylko nazwane.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć