Вытащить пару переменных

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

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    Имеем переменную $str, которая может быть в двух вариантах
    PHP:
    $str 'func1(path/to/file.php)';
    #$str = 'func2(name)->vat->var2';
    хотел сделать, но сонным не соображаю, да и на свежую голову вряд-ли соображу

    нужно сделать, что-то вроде этого
    PHP:
    if(preg_match('#^(func1|func2)\(([a-z]+/?)+\)$#i'$str))
    {
        
    $str preg_replace('#^(func1|func2)\(([a-z]+/?)+\)$#ie''\\1(\'\\2\')\\3'$str);
    }
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    Опишите словами, что вы хотите получить от вложенной маски?
     
  3. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    Регулярку не могу составить.

    нужно $str, заменить результатом выполнения функции \\1, с параметром \\2, и если func2, то подставлялись переменные объекта \\3
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    вы пытаетесь строку привести к первоначальному виду?
    попробуйте воспользоватся следующей регуляркой
    PHP:
    $reg '#(func1|func2)\(([^)]+)\)(.*)#i';
     
  5. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    всё, с утра сам разобрался :)

    если кому нужно будет
    PHP:
    #(func1|func2)\(((?:[a-z]+)|(?:[a-z\.]+/?)+)\)([a-z_0-9\-\>]+)?#i
     
Статус темы:
Закрыта.