友荐云推荐

BBCode是Bulletin Board Code的缩写,有译为「UBB代码」者,属于轻量标记语言(Lightweight Markup Language)的一种,如字面上所显示的,它主要是使用在BBS、论坛、Blog等网络应用上。BBcode的语法通常为 [标记] 这种形式,即语法左右用两个中括号包围,以作为与正常文字间的区别。系统解译时遇上中括号便知道该处是BBcode,会在解译结果输出到用户端时转换成最为通用的HTML语法。
BBcode有两个主要目的:
1. 便利
最为通用的HTML语法虽然已相当简单易懂,但仍需要一定时间学习后才能上手,因此BBcode采用更为直觉易学的语法,转换为HTML的工作则交由系统来代劳。
2. 安全
过去BBS、论坛、Blog也曾经设计开放HTML语法让用户使用,但却衍生出语法输入错误时造成整页排版错乱、有心人利用HTML语法进行XSS式的攻击与破坏等问题。由于BBcode的转换为系统机械式的行为,所以可以有效避免人为输入错误的问题,而BBcode为预先设计好的语法,也就是说意图以BBcode达成所有的HTML语法效果是不可能的,相当于一种语法过滤,如此便可避免所有可能发生的恶意破坏。
BBcode并没有一个共同的标准,各个BBS、论坛、Blog等网络应用程序可能会有自己独创的BBcode,但基本上仍有一些语法因为被广泛采用而成为共通语法。

<?php
$arrayBBCode=array(
''=>         array('type'=>BBCODE_TYPE_ROOT,  'childs'=>'!i'),
'i'=>        array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>',
'close_tag'=>'</i>', 'childs'=>'b'),
'url'=>      array('type'=>BBCODE_TYPE_OPTARG,
'open_tag'=>'<a href="{PARAM}">', 'close_tag'=>'</a>',
'default_arg'=>'{CONTENT}',
'childs'=>'b,i'),
'img'=>      array('type'=>BBCODE_TYPE_NOARG,
'open_tag'=>'<img src="', 'close_tag'=>'" />',
'childs'=>''),
'b'=>        array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<b>',
'close_tag'=>'</b>'),
);
$text=<<<EOF
[b]Bold Text[/b]
[i]Italic Text[/i]
[url]http://www.php.net/[/url]
[url=http://pecl.php.net/][b]Content Text[/b][/url]
[img]http://www.4u4v.net/wp-content/uploads/auto_save_image/2016/12/193555zef.gif[/img]
[url=http://www.php.net/]
[img]http://www.4u4v.net/wp-content/uploads/auto_save_image/2016/12/193555zef.gif[/img]
[/url]
EOF;
$BBHandler=bbcode_create($arrayBBCode);
echo bbcode_parse($BBHandler,$text);
?>

以上例程会输出:

<b>Bold Text</b>
[i]Italic Text[/i]
<a href="http://www.php.net/">http://www.php.net/</a>
<a href="http://pecl.php.net/"><b>Content Text</b></a>
<img src="http://www.4u4v.net/wp-content/uploads/auto_save_image/2016/12/193555zef.gif" />
<a href="http://www.php.net/">
[img]http://www.4u4v.net/wp-content/uploads/auto_save_image/2016/12/193555zef.gif[/img]
</a>