За последние 24 часа нас посетили 17332 программиста и 1236 роботов. Сейчас ищут 1396 программистов ...

экранирующие символы подставляемые регуляркой

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

  1. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Сегодня день регекспа %)
    Столкнулся со странностью, которой раньше не замечал :)
    При отработке
    Код (Text):
    1.  $trr=preg_replace("/(\[tr(.*?)\])(.*?)(\[\/tr\])/sie", "regex_table_tr('$2', '$3', '$4')", $b);
    в функцию regex_table_tr() передаются строки, в которых перед " и ' подставляются экранирующие слеши. И ладно бы это было что то типа addslashes() = так перед \ и / никаких слешей не добавляется. Какие настройки могут на это влиять, и как вообще потом разобрать обратно эти слеши?
     
  2. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    в общем, решил через preg_replace_callback(), но все равно неприятно, такая гадость подложена :(
     
  3. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Это из-за ключа e.
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  5. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    lexa
    ну еще бы, именно ключем /e я вызываю external-функцию :)

    Sergey89
    да, уже нашел, поплевался :(
    спрашивается, зачем делали, если глючит. Причем именно глючит:
    -лажа, функция просто тупо заменяет " на \", т.е. addslashes() добавляет еще один лишний "экранирующий", который ничего не экранирует. (в пхп выставленно magic_quotes_gpc=1, остальные маджики выключены )