Работа с мало-мальски сложными регулярными выражениями в PHP часто становится достаточно трудным занятием. Для упрощения процесса написания регулярных выражений можно воспользоваться специализированными инструментами или использовать встроенные в них средства. Таким средством являются именованные подмаски или именов...

Именнованные подмаски в регулярных выражениях PHP

Работа с мало-мальски сложными регулярными выражениями в PHP часто становится достаточно трудным занятием. Для упрощения процесса написания регулярных выражений можно воспользоваться специализированными инструментами или использовать встроенные в них средства. Таким средством являются именованные подмаски или именованные карманы.

С помощью именнованных подмасок регулярных выражений в PHP можно обращаться к найденным значениям по имени, а не просто по абстрактному индексу.

Вот как выглядит код:

<?php
    // шаблон регулярного выражения с именованными подмасками
    // маски имеею формат (?P<Идентификатор>) или (?<Идентификатор>)
    $pattern = '/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/u';

    // текст в котором ищем совпадение
    $text = '2019-07-17';

    // вызываем функцию
    preg_match($pattern,$text,$matches);

    // преобразуем массив в объект для доступа к именованным параметрам как к полям объекта
    $date = (object)$matches;

    printf("Сегодня %s год, месяц - %s, а день - %s\n",$date -> year, $date -> month, $date -> day);