За последние 24 часа нас посетили 22498 программистов и 1004 робота. Сейчас ищут 730 программистов ...

помогите с регулярным выражением

Тема в разделе "Регулярные выражения", создана пользователем neptun23, 23 янв 2019.

  1. neptun23

    neptun23 Новичок

    С нами с:
    23 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Как работает такое выражение:
    PHP:
    1. $a='main/index/{page:\d+}';
    2. $res=preg_replace('/{([a-z]+) : ([^\}]+)}/','(?P<\1>\2)', $a);
    3.         if($res)
    4.         {
    5.         echo '<pre>';
    6.         var_dump($a);
    7.         echo '</pre>';
    8.         echo'<hr>';
    9.         }
    10.         die();
    11.     }
    что означает <\1>\2
    ?
     
    #1 neptun23, 23 янв 2019
    Последнее редактирование модератором: 25 янв 2019
  2. neptun23

    neptun23 Новичок

    С нами с:
    23 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Я так понимаю что шаблон выбирает :
    1) { - должно содержать фигурную скобку
    2) ([a-z]+) любые символы в диапазоне a-z одна или более - выделить в группу
    3) далее символ :
    4) ([^\}]+) - группа символов одна или более, исключая символ } , \ перед } означает экранирование
    5) должно содержать символ }
    и почему тогда если написать:
    PHP:
    1. $res=preg_match_all('/{([a-z]+) : ([^\}]+)}/',$a,$arr);
    2.         if($res)
    3.         {
    4.         echo '<pre>';
    5.         var_dump($arr);
    6.         echo '</pre>';
    7.         echo'<hr>';
    8.         }
    9.         die();
    10.        }
    11.  
    12. возвращает:
    13.  
    14. array(3) {
    15.   [0]=>
    16.   array(1) {
    17.     [0]=>
    18.     string(10) "{page:\d+}"
    19.   }
    20.   [1]=>
    21.   array(1) {
    22.     [0]=>
    23.     string(4) "page"
    24.   }
    25.   [2]=>
    26.   array(1) {
    27.     [0]=>
    28.     string(3) "\d+"
    29.   }
    30. }
    Хотя мне кажется должно было вернуть {page:\d+}
    Очень нужно знать - используется для роутов в mvc
     
    #2 neptun23, 23 янв 2019
    Последнее редактирование модератором: 25 янв 2019