( кажется от имени igrodata пишет его шкодливый сынок ) взрослые дяди так себя не ведут. надеюсь когда твой папа выйдет из запоя, он тебе задаст люлей! Добавлено спустя 8 минут 48 секунд: Возвращаясь к нашим баранам, я не понимаю почему форумные парсеры экранируют HTML-коды типа © » и т.п. Они не могут навредить, а для оформления могут быть полезны; про парность кодов. в принципе есть регулярка, которая сразу дает ответ соблюдена ли парность [ код ] [ /код ] во всём тексте. было бы удобно проверить раз универсальным регекспом, а потом при успехе обрабатывать отдельные теги уже не думая про вложенность. но хочется иметь исключения: например считаю полезным НЕ оформлять закрытие пунктов списка [ * ]. регулярки исключения не любят! тут я заткнулся.
В PHP. Да нечего там показывать, - писан 3 года назад и он примитивный (относительно), класс в 200 строк на основе preg_replace(). В ближайших планах (когда будет свободное время) планирую переписать полностью, предварительно как раз с использованием встроенного в ПХП модуля. В основном поэтому и спросил - чем он Вам не нравится.
Тебе лень в этой теме сообщения прочитать, а ещё автора поучаешь. Еще до твоего появления я протестировал т.н. "встроенный" парсер, написал об этом статью и в этой теме дал ссылку. Чудак ты этакий!
Вы хотите сказать, что "PEAR BBCode", который Вы тестировали, и встроенный "Bulletin Board Code" это одно и то же?
Для того, для чего все переспрашивают, - чтобы подтвердить свою догадку, что я Вас правильно понял. Вдруг ошибаюсь и мы говорим "о разных материях". Хотя ... если Вы считаете, что pear и встроенный одно и тоже - спорить не буду. По сути меня интересует только одно - чем плох встроенный.
Извини, я был неправ отчасти ))) Да, ты давал ссылку на pecl bbcode, а я на pear bbcode. Они оба такие же "встроенные в PHP", как я встроен в этот форум. Чтобы их использовать надо сначала поставить. Если ты не хозяин сервера, то расширение PEAR можно хотябы скачать в виде php и подключить через include. А PECL требует компиляции, т.е. возможно только на собственном VPS, как минимум. [ тут была куча букв, но я её удалил. сделаю паузу ] pecl bbcode также не обработал переводы строк, я не знаю как с таким жить
Я был неправ, а Вы правы - модуль "Bulletin Board Code" тоже надо доустанавливать. Абидна... Добавлено спустя 4 минуты 18 секунд: Я так думаю, что переводы строк должны обрабатываться при выводе в шаблоне только данных типа "text". Т.е. к BBCode это не имеет отношения.
igordata, что-то ты сегодня в ударе! а вчера обещал жениться сам говорил «не используют его ибо не везде есть» или это был не ты? Chushkin, про text не понял. демонстрирую проблему: Код (Text): первая строка [b]вторая и третья строка[/b] [list] [*]пункт а [*] пункт б [/list] этот форум преобразует в HTML: Код (Text): первая строка<br /> <span style="font-weight: bold">вторая и <br /> третья строка</span><br /> <br /> <ul> <br /> <li>пункт а<br /></li> <li> пункт б<br /></li> </ul> каждому переводу строки соответствует тег <br />, всё идет нормально пока не встретился список: между <ul> и <li> нельзя ставить <br /> ! форум породил невалидную разметку. Добавлено спустя 100500 световых лет: А если закрывать пункт списка явно ([*]пункт а), то здешний парсер будет вставлять <br /> еще и между </li> и <li>.
я тут противоречия не вижу. взял да поставил модуль. Добавлено спустя 52 секунды: пока это единственный минус.
вот я и говорю: каждому своё. лично мне стабильность или наоборот прогресс данного форума глубоко до пизды. я получаю удовольствие от творческого поиска.
я даже не понимаю о чём ты. мути, в своей теме. кстати, runcore, сейчас добрался до Debian Lenny с PHP 5.2.6, проверил регулярки (не из этой темы). так вот, оно понимает и именованные сохранения и рекурсию. всё там ништяк, парсер сгодится, когда будет готов
Коды подсвечивать нужно на JS. Думаю, парсер bbcode - тоже можно сделать на JS - на сервер ляжет меньше нагрузки. Кроме того, моя практика показывает, что JS работает с текстом быстрее, чем PHP. Примерно в 4-5 раз. Даже в IE. Потом, тут все говорят о регулярках - предлагаю подумать ещё о посимвольном переборе текста и переходах из одного режима в другой. На счёт подсветки кода - существует много готовых реализаций. Пользуясь случаем, напомню о своей: viewtopic.php?f=27&t=40078 Потестить: http://works.my-web-dev.16mb.com/js/codeparser/ Знает html, css, js, php, sql. Умеет переходить от одного к другому. То есть когда в исходнике есть, например, и html и css и js и php - разберёт что есть что и всё подсветит. Стили - без проблем настраиваются - шрифты, цвета, жирность и пр. Добавлено спустя 5 минут 3 секунды: Конечно, есть и недостатки. Например, на данный момент основное - не реализована нумерация строк...
Посимвольный подход хорош для быстрых языков типа C или Pascal. В PHP это будет ад кромешный. Тут лучше или регулярки или какой-нибудь конечный автомат на поиcке фрагментов покрупнее. Подсветку синтаксиса я бы тоже на JS делал. Но чтобы весь парсинг на клиенте, … вы кажется чуство меры уже потеряли. )) Ну давайте тогда вообще форум на JS писать, а на сервер только SQL слать. Фантазеры блин.
Почему ты так уверен? Делал я как-то парсер, там текстовые файлы в несколько сотен Кб довольно шустро разбирались по косточкам. Сообщения на форумах редко и одной сотни Кб кода набирают.
Это легко проверить. подсказка. регекспы работают на нативном уровне(написаны на Си) - уровень пхп медленнее по определению. конечно можно придумать какието единичные примеры где регекспы будут сливать - если их применять не по назначению. я лично проверял, только в другой задаче. парсинг формул. вроде ничего сложного. чиселки, операции, вложенные скобки и т.д. посимвольный анализ, трансляцию в польскую нотацию и вычисление - в противовес разбор формулы регулярками и вычисления через callback функцию. регулярки просто порвали всех и вся. я даже сам не ожидал. с тех пор знаю что не такие уж они и тормозные
Что значит "на нативном"? Юникод символ уже стал равен байту? В Си нет нативных функций для работы со строками, это отдельные библиотеки. Те же библиотеки использует и PHP. Так что умничать не надо. Для объемов в несколько килобайт особо нет разницы, посимвольно перебирать или регулярками. Можно даже часть разбить регулярками, часть обработать посимвольно.