Как создать BBcode для сайта

PHP
BBcode — это своего рода шаблон формирования HTML тегов, который позволяет несколько обезопасить сайт и конечно же ограничить пользователя в выборе HTML тегов, которые могут повредить структуре сайта.

В этом топике я приведу вам примеры, как реализовать на вашем сайте 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 комментарий

комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.