Форумы xBB

Форумы xBB > BBCode и прочие языки упрощенной разметки

как обратно отконвертировать

Автор: czech. Последнее редактирование: 2009-03-02 20:32:54

тоесть
bbcode мы перевели в заданные теги html
но встает задача, дать пользователю редактировать введенный текст
а он в базе в html, надо чтоб пользователь получил для редактирования в bbcode

11 комментариев

05.03.2009 00:25:26 #
Iceweasel dima
Вам НЕ НУЖНО конвертировать HTML в BBCode!!!

Дело вот в чем. BBCode изобретен специально для того, чтобы из него генерировать HTML. Обратная процедура может понадобиться только в одном случае: возникла необходимость отредактировать HTML-текст. Но, как правило, этот текст уже был однажды получен из какого-то BBCode и на редактирование лучше выдать именно этот самый BBCode.
 
Короче: Не удаляйте исходный BBCode! В случае надобности именно его следует выдать на редактирование.
05.03.2009 00:26:59 #
Iceweasel dima
Объясню почему. Потому что на редактирование пользователь должен получить именно то, что он ввел. А единственный способ этого добиться, - это сохранить то, что он ввел. Однозначное восстановление BBCode из HTML невозможно.
 
В самом деле, допустим, вы пишете PHP-код, который посредством PHP-интерпретатора генерирует HTML-код. Вряд ли вам придет в голову требовать от PHP-интерпретатора, чтобы он из HTML-кода восстанавливал ваш PHP-код. Вы просто сохраняете PHP-код и, в случае нужды, редактируете именно этот исходный PHP-код.
05.03.2009 00:28:52 #
Iceweasel dima
То же самое и с BBCode. Для его редактирования не нужно восстанавливать его из HTML. Нужно просто выдать на редактирование его самого.
06.03.2009 00:10:36 #
Mozilla Firefox czech
bbcode переводит введенные теги пользователем в html
или это не так?
вот и возникает вопрос
как реализовать возможность пользователям работать с введенными данными с использованием bbcode
вот я ввел quote тег, теперь мне требуется отредактировать введенные данные... как реализовать???
09.03.2009 14:53:01 #
Iceweasel dima
Создайте в таблице сообщений поле "bbcode" и пишите в него исходный BBCode.
Как только пользователь захочет отредактировать свой текст, выдаете ему исходный BBCode.
После редактирования перезаписываете исходный BBCode и перегенерируете HTML. Вот и все.
 
Еще раз повторяю: из HTML невозможно однозначно восстановить BBCode. По следующим причинам:
  1. Один тег BBCode может порождать несколько десятков тегов HTML. Например, тег [php]. Причем каждый из этих HTML-ных тегов будет иметь себе отдельный аналог в BBCode.
     
  2. Один и тот же код HTML можно различными тегами BBCode.
     
  3. Теги BBCode могут быть синонимами. Например, теги [i] и [em].
     
  4. Теги BBCode независимы от регистра.
22.10.2009 14:45:40 #
Opera Гость LEXA
dima
Создайте в таблице сообщений поле "bbcode" и пишите в него исходный BBCode.
А что вы думаете за счет роста базы?
Будет у меня к примеру 100000 записей, а с доп. таблицей они будут весить как 200000 Well
22.10.2009 17:42:50 #
Opera Гость LEXA
dima
Еще раз повторяю: из HTML невозможно однозначно восстановить BBCode. По следующим причинам:
22.10.2009 17:52:21 #
Mozilla Firefox dima
А что вы думаете за счет роста базы?
Будет у меня к примеру 100000 записей, а с доп. таблицей они будут весить как 200000

Думаю, что если у Вас будет настолько популярный сайт, то проблема быстродействия будет для вас гораздо более насущной, чем проблема дискового пространства. И скорее всего Вы будете решать проблему быстродействия за счет дискового пространства (как все и делают). Т.е. будете выделять все больше дискового пространства под всевозможные кэши, для хранения всяких препроцессированных данных и будете искусственно денормализовывать базу, лишь бы все крутилось и не тормозило. Хранение исходного BBCode можете считать первым шагом в этом направлении.
 
Кроме того, когда пользователь запрашивает текст на редактирование, он желает увидеть именно тот код, который он вводил, а не тот, который был изуродован неким хитрым алгоритмом. Подумайте об удобстве пользователей, если хотите иметь таблицу со 100к постов.
22.10.2009 18:02:54 #
Mozilla Firefox dima
так если он сгенерирован xBB, то теоретически не должно быть проблем по переводу из HTML в BBCode

Есть проблемы. Ссылку "<a href="гы">мы</a>" я создаю так: "[a=гы]мы[/a]", а Вы, возможно, так: "[url="гы"]мы[/]". Какой из этих двух вариантов должен быть выбран при обратной конвертации?
22.10.2009 21:15:54 #
Opera Гость LEXA
dima
Есть проблемы. Ссылку "<a href="гы">мы</a>" я создаю так: "[a=гы]мы[/a]", а Вы, возможно, так: "[url="гы"]мы[/]". Какой из этих двух вариантов должен быть выбран при обратной конвертации?
стандартизировать?Well

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2019, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.