Голосование
Какую CMS Вы предпочитаете
AtomX
Fapos CMS
Drunya CMS
Топ новостей
- Генератор аватарок в стиле пиксель-арт
- Скачать Fapos CMS 1.1.8 Бесплатно
- Цунами в Японии. Последствия.
- Предварительная инфа о FAPOS 1.1.9. Часть 2
- Описание версии CMS Fapos 0.9.9
- Новая версия Fapos 1.3
- Половина россиян не смогла отличить легальный контент
- Что есть Fapos CMS
- Убийца Apache у вас на пороге
- Открытое тестирование Fapos 0.9.9
Последние комментарии
Топ пользователей
Сайты на 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 Мар 2015 -
lol
Дата отправления: 11 Июл 2014 -
alex
Спасибо. Это то что мне было нужно и сам я долб...Ёб до этого не догадался. Супер.Дата отправления: 18 Окт 2013 -
Скад
Опиши, пожалуйста, более подробно. Где проводить замену и как. А то я не понялДата отправления: 4 Авг 2011 -
Drunya
Лучше на форуме спрашивать.
А так вообще document.getElementById('ИД') позволяет получить тебе элемент с определенным идишником и затем уже проводить с ним манипуляции, например менять его содержимое или стили и т.д. Это я думаю и есть ключДата отправления: 4 Авг 2011
Сейчас online: 75. Зарегистрированных: 0. Гостей: 75.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте