За последние 24 часа нас посетил 45391 программист и 3276 роботов. Сейчас ищут 1614 программистов ...

Регулярные выражения и переменные

Тема в разделе "PHP для новичков", создана пользователем NR55RU, 28 мар 2011.

  1. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    Вопрос такого плана.
    В книге что я читал по регуляркам были примеры на Perl, там была такая фича все что заключалось в круглые скобки в регулярном выражении автоматически сохранялось в переменные $1. $2. $3....

    ну типа так:
    текст: Hello World !!!
    регулярка: ^([a-z]{1,5})(.*)$
    Интерпретатор автоматом создаст переменные $1=Hello $2= World !!!

    В ПХП что то подобное есть что автоматом найденные совпадения для скобок сохранит куда то ?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    В зависимости от задачи и используемой функции возможно либо использовать обратные ссылки, либо так называемые "карманы". Всё, что заключено в круглые скобки ( и ) будет захвачено и "положено в карман", из которого что-то достать можно с помощью обращения $1, $2 и т.д (либо \1, \2). В карман попадают скобки не по уровню вложенности, а по порядку открытия.

    Пример:
    PHP:
    1. <?php
    2.  
    3. $regex = '/(Colo(u?)r)/is';
    4.  
    5. if(preg_match($regex, 'I like yellow color', $pocket)) {
    6.  echo '<pre>' . print_r($pocket, true) . '</pre>';
    7. }
    Где в $pocket попало то, что в скобках.
    В preg_replace используются наоборот $1 (и т.д.) в шаблоне замены как обратные ссылки.
     
  3. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    Спасиб, все предельно понятно :)