За последние 24 часа нас посетили 32843 программиста и 1821 робот. Сейчас ищут 1166 программистов ...

Динамическая подстановка данных preg_replace

Тема в разделе "Регулярные выражения", создана пользователем ctekjlo, 25 фев 2010.

  1. ctekjlo

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

    С нами с:
    20 июн 2009
    Сообщения:
    57
    Симпатии:
    0
    Всем привет. Столкнулся тут с проблемой сам дойти не могу до решения.

    Вопрос :
    Хочу из %today+1% или %today+456% выдрать число после + и прибавить к текущей дате проблема в том что шаблон компилируется один раз или это я что то туплю

    вот мой код можно просто ткнуть в какую сторону рыть а дальше я сам

    PHP:
    1.  
    2. <?php
    3.  
    4. //текст с который будем проходить регуляркой
    5. $text = '%today+10000% gfdg %today+100% dfgdf rterte ert er ter ter ter %today+1% %today+1%';
    6.  
    7. //шаблон для выдерания числа из строки
    8. $pattern = '/%today\+(\d*)%/i';
    9.  
    10. //тут я считаю дату и хочу прибавить мое выдранное число '${1}' к текушей дате
    11. $replacement = date( "d-m-y" , mktime ( 0 , 0 , 0 , date( "m" ) , date( "d" ) + '${1}' , date("Y") ) );
    12.  
    13.  
    14. $text = preg_replace( $pattern , $replacement , $text );
    15. echo $text;
    16.  
    17. ?>
    18.  
     
  2. ctekjlo

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

    С нами с:
    20 июн 2009
    Сообщения:
    57
    Симпатии:
    0
    Сорри за вопрос решение нашел сам


    На фанне код дропую может кто юзнет.

    PHP:
    1.  
    2. <?php
    3.  
    4. $text = '%today+10000% gfdg %today+100% dfgdf rterte ert er ter ter ter %today+1% %today+1%';
    5.  
    6. function make_date( $matches )
    7. {
    8.     return date( "d-m-y" , mktime ( 0 , 0 , 0 , date( "m" ) , date( "d" ) + $matches[1] , date("Y") ) );
    9. }
    10. echo preg_replace_callback( "|%today\+(\d*)%|" , "make_date" , $text );
    11.  
    12. ?>
    13.