Voting
Какую CMS Вы предпочитаете
AtomX
Fapos CMS
Drunya CMS
Top news
- Генератор аватарок в стиле пиксель-арт
- Скачать Fapos CMS 1.1.8 Бесплатно
- Цунами в Японии. Последствия.
- Описание версии CMS Fapos 0.9.9
- Предварительная инфа о FAPOS 1.1.9. Часть 2
- Новая версия Fapos 1.3
- Что есть Fapos CMS
- Половина россиян не смогла отличить легальный контент
- Убийца Apache у вас на пороге
- Открытое тестирование Fapos 0.9.9
Recent comments
Top users
Sites on AtomX CMS
Для начала давай выясним что такое bb код. это нечто что позволяет превратить [url ]http://fapos.net[/url] в <a href="http://fapos.net">http://fapos.net</a>. По сути BB коды это просто замена одного текста на другой по определенным правилам.
А теперь давай вспомним какая функция в PHP позволяет делать нам такие замены. Конечно же preg_replace(). Она работает по аналогии с str_replace, только принимает в качестве первого параметра, то есть что менять, регулярное выражение. Круто да? Вот как можно реализовать приведенный в начале пример BB кода при помощи этой функции
или пример создания более простого BB кода
так же стоит обратить что слеш(/) и квадратные скобки([]) экранируются, так как это управляющие символы в регулярных выражениях и для того чтобы они в шаблоне означали сами себя их надо экранировать.
Вот и все что касается части преобразования, дальше уже на что вам хватит фантазии. Помните, что через подобные преобразования надо прогонять только ту информацию в которой они должны работать, такая инфа как заголовки обычно не проходит такие преобразования.
Безопасность
следует помнить что BB коды как правило приводят к появлению уязвимостей по-этому чтобы свести риск на минимум перед преобразованиями прогоняйте весь текст через квотящие функции, они не затронут квадратные скобки, то есть BB коды, но сведут на нет попытки взлома через BB коды. А так как сами бб коды будут преобразованы в HTML после, с ними все будет хорошо и они будут коректно работать. Примером такой "квотящей" функции может стать htmlspecialchars();
Клиентская часть
Клиентская часть BB кодов это та часть которую использует пользователь, чтобы их вставить. конечно ее может и не быть - пользователи могут просто писать их руками и все, но это не совсем удобно. Клиентская часть должна состоять как минимум из текстового поля куда будет вводиться информация и кнопок. Сами кнопки для работы используют JavaScript. Вот простой пример клиентской части
ну вот текстовое поле и кнопка с маркировкой "B" по нажатии на которую в поле подставится "[b]". Это самый простой пример, конечно еще надо сделать проверку открыт ли тег и если открыт ставить закрывающий а не открывающий, и прикрутить работу сразу по выделеному участку текста. Но это уже я оставлю на ваше усмотрение, в крайнем случае пишите на форуме если остались вопросы
А теперь давай вспомним какая функция в PHP позволяет делать нам такие замены. Конечно же preg_replace(). Она работает по аналогии с str_replace, только принимает в качестве первого параметра, то есть что менять, регулярное выражение. Круто да? Вот как можно реализовать приведенный в начале пример BB кода при помощи этой функции
1
2
<?php $message = preg_replace("#\[url\](http:\/\/[\w-_\.]*\.{1}\w{2,}[\w-_\/\.\?=]*)\[\/url\]#isU", '<a href="\\1"">\\1</a>', $message);
//метки \\1 обозначают совпавшую часть шаблона, то есть то что было в круглых скобках. В нашем случае это url?>
или пример создания более простого BB кода
1
2
<?php $message = preg_replace("#\[b\](.*)\[\/b\]#isU", '<b>\\1</b>', $message);?>
Вот и все что касается части преобразования, дальше уже на что вам хватит фантазии. Помните, что через подобные преобразования надо прогонять только ту информацию в которой они должны работать, такая инфа как заголовки обычно не проходит такие преобразования.
Безопасность
следует помнить что BB коды как правило приводят к появлению уязвимостей по-этому чтобы свести риск на минимум перед преобразованиями прогоняйте весь текст через квотящие функции, они не затронут квадратные скобки, то есть BB коды, но сведут на нет попытки взлома через BB коды. А так как сами бб коды будут преобразованы в HTML после, с ними все будет хорошо и они будут коректно работать. Примером такой "квотящей" функции может стать htmlspecialchars();
Клиентская часть
Клиентская часть BB кодов это та часть которую использует пользователь, чтобы их вставить. конечно ее может и не быть - пользователи могут просто писать их руками и все, но это не совсем удобно. Клиентская часть должна состоять как минимум из текстового поля куда будет вводиться информация и кнопок. Сами кнопки для работы используют JavaScript. Вот простой пример клиентской части
Code:
<script type="text/javascript">
function bb(tag) {
var myform = document.getElementById('text');
myform.value += '[' + tag + ']';
}
</script>
<input type="button" value="B" onClick="bb('b')" />
<textarea id="text"></textarea>
function bb(tag) {
var myform = document.getElementById('text');
myform.value += '[' + tag + ']';
}
</script>
<input type="button" value="B" onClick="bb('b')" />
<textarea id="text"></textarea>
ну вот текстовое поле и кнопка с маркировкой "B" по нажатии на которую в поле подставится "[b]". Это самый простой пример, конечно еще надо сделать проверку открыт ли тег и если открыт ставить закрывающий а не открывающий, и прикрутить работу сразу по выделеному участку текста. Но это уже я оставлю на ваше усмотрение, в крайнем случае пишите на форуме если остались вопросы

Создаем BB коды на PHP
Теги: Создание BB; bb коды на javascript; работа с регулярными выражениями;
Источник: Drunya
Теги: Создание BB; bb коды на javascript; работа с регулярными выражениями;
Источник: Drunya
Комментарии
-
stream
+100500Дата отправления: 23 Mar 2015 -
lol
Дата отправления: 11 Jul 2014 -
alex
Спасибо. Это то что мне было нужно и сам я долб...Ёб до этого не догадался. Супер.Дата отправления: 18 Oct 2013 -
Скад
Опиши, пожалуйста, более подробно. Где проводить замену и как. А то я не понялДата отправления: 4 Aug 2011 -
Drunya
Лучше на форуме спрашивать.
А так вообще document.getElementById('ИД') позволяет получить тебе элемент с определенным идишником и затем уже проводить с ним манипуляции, например менять его содержимое или стили и т.д. Это я думаю и есть ключДата отправления: 4 Aug 2011
Сейчас online: 5. Зарегистрированных: 0. Гостей: 5.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте