Как создать BBcode для сайта
BBcode — это своего рода шаблон формирования HTML тегов, который позволяет несколько обезопасить сайт и конечно же ограничить пользователя в выборе HTML тегов, которые могут повредить структуре сайта.
В этом топике я приведу вам примеры, как реализовать на вашем сайте BBcode. Конечно же я не буду фантазировать и придумывать что то новое для исполнения BBcode, а воспользуюсь на мой взгляд самым простым и доступным методом, которым пользуюсь именно я, но быть может и еще кто то.
Для начала давайте поставим некоторую задачу перед тем как приступать к написанию шаблона BBcode который и будет формировать HTML теги для нашего сайта.
Я предлагаю взять самые распространенные HTML теги, такие как:
1. Ссылка
2. Выделение жирным
3. Формирование тега IMG
4. Подчеркивание
Если вам этого будет недостаточно, можно будет дописать по вашей просьбе.
И так что у нас должно получиться:
Приступаем к написанию нашей функции, которая будет обрабатывать наш текст, искать в нем BBcode и переводить в HTML теги.
Сама функция очень проста, а самое главное быстрая и не нуждается в каких либо сторонних парсерах BBcode
Собственно тут все должно быть вам понятно, принцип работы функции очень просто, в $text мы загоняем текст который нам необходимо обработать. Скажем вы используете какую либо CMS, и новость выводиться как то так:
Нам нужно текст прогнать через нашу функцию:
Для теста можете прописать так
В этом топике я приведу вам примеры, как реализовать на вашем сайте BBcode. Конечно же я не буду фантазировать и придумывать что то новое для исполнения BBcode, а воспользуюсь на мой взгляд самым простым и доступным методом, которым пользуюсь именно я, но быть может и еще кто то.
Для начала давайте поставим некоторую задачу перед тем как приступать к написанию шаблона BBcode который и будет формировать HTML теги для нашего сайта.
Я предлагаю взять самые распространенные HTML теги, такие как:
1. Ссылка
2. Выделение жирным
3. Формирование тега IMG
4. Подчеркивание
Если вам этого будет недостаточно, можно будет дописать по вашей просьбе.
И так что у нас должно получиться:
1. [url=http://scriptland.com.ua/]Scriptland.com.ua[/url] - Формирует <a href="http://scriptland.com.ua/">Scriptland.com.ua</a>
2. [b]Выделение жирным[/b] - Формирует <b>Выделение жирным</b>
3. [img]http://scriptland.com.ua/logo.png[/img] - Формирует <img src="http://scriptland.com.ua/logo.png" alt="PHP: Как создать BBcode для сайта" />
4. [u]Подчеркивание[/u] - Формирует <u>Подчеркивание</u>
Приступаем к написанию нашей функции, которая будет обрабатывать наш текст, искать в нем BBcode и переводить в HTML теги.
Сама функция очень проста, а самое главное быстрая и не нуждается в каких либо сторонних парсерах BBcode
// Парсер BBcode своими руками
function parserBBcode($text) {
// $text - Текст в котором необходимо найти наши BBcode
// Пишем регулярное выражение, поиск и замена
$text = preg_replace('/\[(\/?)(b|i|u|s)\s*\]/', "<$1$2>", $text) ; // Ищем теги [b]/[i]/[u]/[s] и заменяем их на HTML теги
// Регулярка для URL выглядеть несколько сложнее, но на самом деле это не так
// Если ссылка без анкора
$text = preg_replace('/\[url\](?:http:\/\/)?(.+)\[\/url\]/', "<a target=\"_blank\" href=\"http://$1\">$1</a>", $text);
// Если ссылка с анкором
$text = preg_replace('/\[url\s?=\s?([\'"]?)(?:http:\/\/)?(.+)\1\](.*?)\[\/url\]/', "<a target=\"_blank\" href=\"http://$2\">$3</a>", $text);
// Пишем регулярку для обработки ссылки на изображение
$text = preg_replace('/\[img\s*\]([^\]\[]+)\[\/img\]/', "<img src=\"$1\" alt="PHP: Как создать BBcode для сайта" />", $text );
return $text;
}
Собственно тут все должно быть вам понятно, принцип работы функции очень просто, в $text мы загоняем текст который нам необходимо обработать. Скажем вы используете какую либо CMS, и новость выводиться как то так:
<?php
echo $news ;
?>
Нам нужно текст прогнать через нашу функцию:
<?php
echo parserBBcode($news) ;
?>
Для теста можете прописать так
$news = "Проверка парсера BBcode - [b]Выделение жирным[/b] | [u]Подчеркивание[/u] | [url=http://scriptland.com.ua/]ScriptLand Solutons[/url] и соответственно картинка [img]http://scriptland.com.ua/logo.png[/img]" ;
echo parserBBcode($news) ;
1 комментарий