Интернет, компьютеры, софт и прочий Hi-Tech | |||||||||||||||||
Избранные докиМетки (все метки)hi tech, internet, it, интернет, информационные технологии, ит, по, программное обеспечение, сайт, софт
Подписаться через RSS2Email.ru
Дополнительнооптимизация, сайт, мониторы, движок, Битрикс, хостинг, сайты, мобильные, электроника, видеокарта |
Показать HTML | Показать BBCode 2 способа обработки BBCodeПеревод с английского. Оригинальный текст: 2 ways of BBCode handlingНа некоторых форумах, в гостевых книгах и в прочих аналогичных скриптах, где пользователи могут оставлять свои сообщения, мало использовать обычное поле ввода. Люди привыкли вставлять в тексты выделения вроде подчеркивания или жирного шрифта. Как это позволяет MS Word и подобные редакторы. Это не только делает сообщение более красивым, но и добавляет ему читабельности и юзабельности (как, например, возможность поставить гиперссылку на другой сайт, а не просто вбить его адрес). Такие возможности теперь используются повсеместно. Но как нам самим реализовать их? Именно об этом я и собираюсь сегодня рассказать. Первое, что приходит на ум, - разрешить пользователям вводить код HTML в поле ввода. В других словах, если пользователь пишет что-то типа "Привет всем! Я уже давно не видел такого отвратительного сайта. Пока",
то разрешить ему писать так: "Привет всем! Я уже давно не видел такого <b>отвратительного</b> сайта. Пока",
чтобы остальные пользователи увидели в своих браузерах такой вывод: "Привет всем! Я уже давно не видел такого отвратительного сайта. Пока".
Все ничего, но этот способ имеет 2 небольших недостатка. Первый из них, - сообщения будут выводиться в окружении HTML-кода страницы. Однажды в какое-то сообщение будет введено "</table>" или типа того. При выводе этого сообщения разметка сайта будет нарушена, и в лучшем случае сайт распадется на пазлы. Более того, если кто-нибудь вместе с HTML введет в сообщение код JavaScript, то он выполнится в браузерах всех других пользователей, посетивших страницу с этим сообщением. Этот JS может всего лишь напугать, если будет чем-то вроде "alert('Hello, world!');". Но он может оказаться и скриптом в 5 страниц, который украдет ваш кошелек WebMoney, а после этого отформатирует ваш жесткий диск. Второй и главный недостаток, - это то, что не все пользователи Интернета знают HTML. Обобщив все вышесказанное умный человек придумал BBCode, который вместе с JavaScript решает все наши проблемы. В результате мы имеем то же самое поле ввода, но теперь с кнопками, похожими на кнопки MS Word, с помощью которых можно размечать текст как жирный, наклонный и т.п. После нажатия на кнопку, выделенный текст сообщения будет окружен специальными выражениями. Например, в нашем случае текст будет выглядеть так: "Привет всем! Я уже давно не видел такого [B]отвратительного[/B] сайта. Пока".
BBCode похож на HTML, но он не есть HTML (это решает первую проблему). А кнопки дают пользователям удобный интерфейс (это решает вторую и главную проблему). После того, как пользователь ввел сообщение и нажал на кнопку "отправить", сообщение пересылается PHP-скрипту, который должен сконвертировать BBCode в HTML и сохранить результат в базе данных. Теоретически есть два способа реализовать эту конвертацию. Давайте начнем с простой замены. PHP
Это - первый и самый очевидный способ реализации. На первый взгляд он кажется очень простым, но возникла проблема, когда я столкнулся с более сложными выражениями вроде следующего: [url=http://i-novice.net]Мой блог[/url].К счастью, я оказался не первым, кто столкнулся с этой проблемой. Кто-то уже написал специальный класс, который конвертирует BBCode в HTML. Итак, второй способ. Используйте библиотеку xBB (вы можете получить ее здесь: http://xbb.uz/download.bb). Она очень функциональна и вы можете убедиться в этом на ее собственном сайте, а здесь я всего лишь покажу, как она может упростить обработку BBCode: PHP
Если вы введете: [B]Hello, world![/B], то на выходе получите Hello, world!. Ну вот и все. Новички могут отправляться в поиск, набираться опыта и профессионализма Всем хорошего дня и пока.
Перевод Дмитрия Скоробогатова
Последнее редактирование: 2008-12-28 03:14:55 Метки материала: BBCodes, блог, сайт, скрипт BBCode, скрипт PHP, редактор BBCode 13 комментариев
А чтож мой коммент удален?
|
||||||||||||||||
| 13.03.2009 23:16:15 | # |
| 16.03.2009 19:09:39 | # |
| 25.03.2009 19:01:59 | # |
| 25.03.2009 21:53:27 | # |
| 08.01.2011 06:45:39 | # |
| 08.01.2011 06:49:00 | # |
| 08.01.2011 06:55:57 | # |
© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.