ФорумПрограммированиеPHP для идиотов → Опять Регулярки

Опять Регулярки

  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 17 июня 2009 г. 12:19

    Прошу прощения за своё нубство в регулярках. Не то чтобы полный ноль, но и не спец тоже. Такие грабли у меня: реализовую ББ код через базу, тобишь чтобы можно было добавлять/удалять и давать некие коды "особым" юзерам. все через preg_replace. Всё получаеться, всё хорошо, но интересует 2 момента, подскажите плиз если знаете.

    1.
    /\[quote\](.+)\[\/quote\]/Ui
    меняем на
    <div class="quote"><div class="quotehdr">Цитата</div>\1</div>
    , но при этом если структура
    bla2
    blablabla
    , риплейс не проходит корректно, тобшь выводит
    <div class="quote"><div class="quotehdr">
    bla2</div>\1</div>blablabla
    (от первого
    ищет сразу же следующий, а должен последний). Это как-то можно обойти без танцев с бубном?

    2. Если я делаю тег
    , который меняю на '<pre>', то в средине этого тега, всё равно рабоют другие ( и т д). Тут тоже можно что-то сделать?
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 17 июня 2009 г. 12:33, спустя 14 минут 54 секунды

    Josh,
    bla2
    blablabla

    без "танца с бубном" пока не придумали, в апреле pasha_moscow пытался провернуть нечто такое же. надо писать свой автомат.
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 17 июня 2009 г. 12:38, спустя 4 минуты 35 секунд

    хотя нет, не совсем,
    $html = str_replace(array("
    ","
    "),array('<div class="quote"><div class="quotehdr">Цитата</div>',"</div>"),$html);
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 17 июня 2009 г. 12:41, спустя 3 минуты 26 секунд

  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 17 июня 2009 г. 13:15, спустя 33 минуты 51 секунду


    хотя нет, не совсем,
    $html = str_replace(array("
    ","
    "),array('<div class="quote"><div class="quotehdr">Цитата</div>',"</div>"),$html);



    а если
    :)
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 19 июня 2009 г. 0:02, спустя 1 день 10 часов 47 минут

    ну тогда preg_replace() пока заменяется))
    а вообще, можно на самом деле посмотреть в какой-нить не дерьмовый бб-парсер
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 19 июня 2009 г. 9:07, спустя 9 часов 4 минуты 28 секунд

    preg_match_all() и в цикле обрабатывать результаты
    или не в цикле, а через array_map()
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!