|
Форумы xBB > BBCode и прочие языки упрощенной разметки
как обратно отконвертировать
Автор: czech.
Последнее редактирование: 2009-03-02 20:32:54
тоесть
bbcode мы перевели в заданные теги html
но встает задача, дать пользователю редактировать введенный текст
а он в базе в html, надо чтоб пользователь получил для редактирования в bbcode
11 комментариев
dima
Вам НЕ НУЖНО конвертировать HTML в BBCode!!!
Дело вот в чем. BBCode изобретен специально для того, чтобы из него генерировать HTML. Обратная процедура может понадобиться только в одном случае: возникла необходимость отредактировать HTML-текст. Но, как правило, этот текст уже был однажды получен из какого-то BBCode и на редактирование лучше выдать именно этот самый BBCode.
Короче: Не удаляйте исходный BBCode! В случае надобности именно его следует выдать на редактирование.
dima
Объясню почему. Потому что на редактирование пользователь должен получить именно то, что он ввел. А единственный способ этого добиться, - это сохранить то, что он ввел. Однозначное восстановление BBCode из HTML невозможно.
В самом деле, допустим, вы пишете PHP-код, который посредством PHP-интерпретатора генерирует HTML-код. Вряд ли вам придет в голову требовать от PHP-интерпретатора, чтобы он из HTML-кода восстанавливал ваш PHP-код. Вы просто сохраняете PHP-код и, в случае нужды, редактируете именно этот исходный PHP-код.
dima
То же самое и с BBCode. Для его редактирования не нужно восстанавливать его из HTML. Нужно просто выдать на редактирование его самого.
czech
bbcode переводит введенные теги пользователем в html
или это не так?
вот и возникает вопрос
как реализовать возможность пользователям работать с введенными данными с использованием bbcode
вот я ввел quote тег, теперь мне требуется отредактировать введенные данные... как реализовать???
dima
Создайте в таблице сообщений поле "bbcode" и пишите в него исходный BBCode.
Как только пользователь захочет отредактировать свой текст, выдаете ему исходный BBCode.
После редактирования перезаписываете исходный BBCode и перегенерируете HTML. Вот и все.
Еще раз повторяю: из HTML невозможно однозначно восстановить BBCode. По следующим причинам:
- Один тег BBCode может порождать несколько десятков тегов HTML. Например, тег
[php]. Причем каждый из этих HTML-ных тегов будет иметь себе отдельный аналог в BBCode.
- Один и тот же код HTML можно различными тегами BBCode.
- Теги BBCode могут быть синонимами. Например, теги
[i] и [em].
- Теги BBCode независимы от регистра.
Гость LEXA
dima Создайте в таблице сообщений поле "bbcode" и пишите в него исходный BBCode.
А что вы думаете за счет роста базы?
Будет у меня к примеру 100000 записей, а с доп. таблицей они будут весить как 200000
Гость LEXA
dima Еще раз повторяю: из HTML невозможно однозначно восстановить BBCode. По следующим причинам:
так если он сгенерирован xBB, то теоретически не должно быть проблем по переводу из HTML в BBCode 
dima
А что вы думаете за счет роста базы?
Будет у меня к примеру 100000 записей, а с доп. таблицей они будут весить как 200000
Думаю, что если у Вас будет настолько популярный сайт, то проблема быстродействия будет для вас гораздо более насущной, чем проблема дискового пространства. И скорее всего Вы будете решать проблему быстродействия за счет дискового пространства (как все и делают). Т.е. будете выделять все больше дискового пространства под всевозможные кэши, для хранения всяких препроцессированных данных и будете искусственно денормализовывать базу, лишь бы все крутилось и не тормозило. Хранение исходного BBCode можете считать первым шагом в этом направлении.
Кроме того, когда пользователь запрашивает текст на редактирование, он желает увидеть именно тот код, который он вводил, а не тот, который был изуродован неким хитрым алгоритмом. Подумайте об удобстве пользователей, если хотите иметь таблицу со 100к постов.
dima
так если он сгенерирован xBB, то теоретически не должно быть проблем по переводу из HTML в BBCode
Есть проблемы. Ссылку " <a href="гы">мы</a>" я создаю так: " [a=гы]мы[/a]", а Вы, возможно, так: " [url="гы"]мы[/]". Какой из этих двух вариантов должен быть выбран при обратной конвертации?
Гость LEXA
dima Есть проблемы. Ссылку "<a href="гы">мы</a>" я создаю так: "[a=гы]мы[/a]", а Вы, возможно, так: "[url="гы"]мы[/]". Какой из этих двух вариантов должен быть выбран при обратной конвертации?
стандартизировать?
Ответить:
|