За последние 24 часа нас посетили 19737 программистов и 1692 робота. Сейчас ищут 1959 программистов ...

Убирать лишнее...

Тема в разделе "Регулярные выражения", создана пользователем kostyl, 24 май 2009.

  1. kostyl

    kostyl Guest

    Обычная задача - додсветка комментария /* */, но надо убрать от туда все конструкции вида <span style="(.*?)"> и </span>. Пробую так:
    PHP:
    1.  
    2. <?php
    3. preg_repalce('#(/\*)[^((\x3C\/span\x3E)|(\x3Cspan\x20style="(.*?)"\x3E))](.*?)(\*/)#ui', '$0', $s);
    4.  
    естественно не получается... Чувствую какуюто хрень намутил. Помогите, пожалуйста.
     
  2. kostyl

    kostyl Guest

    Блин, это вообще можно сделать с помощью preg_repalce ??
     
  3. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    через callback делай, передавай туда захват м/у /* */, а в переданном чисть от "спанов"
     
  4. kostyl

    kostyl Guest

    antonn
    Спасибо добрый человек. Спасибо. А то тута все отморозились, помощи не дождешься...
     
  5. kostyl

    kostyl Guest

    Вот, может кому пригодиться:
    PHP:
    1.  
    2. <?php
    3. $s = preg_replace_callback('#(/\*)(.*?)(\*/)#ui',
    4.   create_function('$matches',
    5.   '$matches[0] = preg_replace("#((\x3Cspan\x20style=\x22(.*?)\x22\x3E)|(\x3C/span\x3E))#iu", " ", $matches[0]);
    6.   return "<span style=\x22color: #08aadd;\x22>" . $matches[0] . "</span>";')
    7.                                        , $s);
    8.  
    Я не жадный ;)
     
  6. kostyl

    kostyl Guest

    А в принципе вместо строчки 4 и такая сгодиться:
    PHP:
    1.  
    2. <?php
    3. $matches[0] = strip_tags($matches[0]);
    4.  
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    веришь, нет, что-то не припомню такой велосипедной задачи =)
    если это подсветка синтаксиса пыха, так highlight_string в помощь, цвета там настраиваются
     
  8. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    очень скудная подстветка, не зря люди пишут свое.
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    antonn
    неверю что нет готовых dll'ек для этого
     
  10. kostyl

    kostyl Guest

    Mr.M.I.T.
    подсветка - подсветка, но не только php, а и всего остального, сейчас занимаюсь, подсветкой с bb-тэгами и всем подобным, так что всякое в голове крутиться...
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    codepaste.ru
    чё там у него за либа?
     
  12. kostyl

    kostyl Guest

    Не знаю. Сам делаю. Хочу все сам. Был бы рад за помощь в описаниях синтаксиса: Python, Django, Perl, Ruby, Java, Smalltalk, cpp, c#, 1c, vbscript. А остальные и сам смогу ;)
     
  13. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    скачай geshi :)
     
  14. kostyl

    kostyl Guest

    скачал, разархивировал, посмотрел, не понравилось, продолжаю в том же духе...
    ps: хоть регулярки подучил...
     
  15. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    я про подсветку синтаксиса говорил, там посмотреть :)
     
  16. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Я так каждый раз их подучиваю и каждый раз успеваю всё забыть до следующей задачки. И приходится опять подучивать :)
     
  17. kostyl

    kostyl Guest

    А, ну да, я попользуюсь... :)
    Hight
    Дак, я вообще не знал, почти ничего, условия там эти, назад, вперед смотрящие и все такое....
     
  18. kostyl

    kostyl Guest

    Не подскажите, никак не могу врубиться в смысл подвыражений с использованием (?: Что оно делает?
     
  19. kostyl

    kostyl Guest

    antonn
    Слы а ты ее не юзал. Она херово себя ведет с mbstring.func_overload. Не знаешь что сделать надо?
     
  20. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не захватывает выражение в скобках (Не делает из него backreference).
    Таких выражений много, вроде (?= или (?<= и даже с указанием модификатора только для группы.
     
  21. kostyl

    kostyl Guest

    Ребят. Никто не работал с GeShi? Она падло не пашет при mbstring.func_overload > 0. Может взять, да все функции переписать в ней под перегружаемые и u добавить в preg_* или че проще посоветуете?
     
  22. хтассесс с отключением оверлоада?
     
  23. kostyl

    kostyl Guest

    флоппик
    наверно придется везде отключать... Блин все приложение переводить на 1251 из-за одной либы (
     
  24. kostyl

    kostyl Guest

    И все таки наверно можно что то сделать, чувствуется мне...
    Все вроде нормально работает когда я передаю конвертированный в однобайтовый текст.
    PHP:
    1.  
    2. <?php
    3. $Highlighter = new GeSHi(mb_convert_encoding($this->_sCode, 'ANSI', 'UTF-8'), $this->_sLangName);
    4.  
    Только тогда, например комментарии в коде, которые в базу записались в UTF-8 отображаются как ???. Но кириллица же однобайтовая, почему так?
     
  25. Так ты не в анси конверть, а в windows-1251