ProfiPHPProfiPHP
Категория: Полезное в PHP

Парсинг BBcode

BBcode представляют собой простой текстовый язык разметки, который очень часто применяется на форумах, гостевых книгах и в других формах на сайте. Они, с одной стороны, ограничивают возможности по добавлению информации, а с другой стороны - очень простые для пользователей, которые хотят разместить отформатированную информацию.

После написания BB кодов, их необходимо перевести (распарсить) в Html.

Опишем самый простой набор правил на PHP. Почему самый простой? А все потому, что для управления BB кодами разрабатывают огромные классы, которые выполняют множество дополнительных проверок, например, вложение BB кода в другой код, отсутствие закрытого тега и другие.

Правила в примере представляют собой набор регулярных выражений, которые на выходе выдадут чистый Html.
// STRONG
$text = preg_replace( '#\[b\]([\s\S]*?)\[\/b\]#is', '<strong>$1</strong>', $text );
// CODE
$text = preg_replace( '#\[code\]([\s\S]*?)\[\/code\]#ise', "'<pre><code>'.htmlspecialchars( '$1' ).'</соde></prе>'", $text );
// IMG
$text = preg_replace( '#\[img\]([\s\S]*?)\[\/img\]#is', '<img src="$1" />', $text );
$text = preg_replace( '#\[img\s?=\s?(.+?)\](.*?)\[\/img\]#is', '<img src="$1" alt="$2" />', $text );
// URL
$text = preg_replace( '#\[url\]([\s\S]*?)\[\/url\]#is', '<a href="$1">$1</a>', $text );
$text = preg_replace( '#\[url\s?=\s?(.+?)\](.+?)\[\/url\]#is', '<a href="$1">$2</a>', $text );
// LIST
$text = preg_replace( '#\[list\]([\s\S]*?)\[\/list\]#is', '<ul>$1</ul>', $text );
$text = preg_replace( '#\[\*\]([\s\S]*?)\[\/\*\]#is', '<li>$1</li>', $text );
Разобравшись с данными регулярными выражениями вы сможете добавлять любое количество собственных BB кодов.

Добавить комментарий

Имя:
Текст комментария: