PHP BBCODE与HTML 互转


发布评论 (0)

在富文本编辑框中有时需要允许用户使用部分HTML标签来丰富文本内容,如果完全开放HTML标签部分用户不理解HTML标签经常漏写结束标签导致整个页面的格式被其修改,还有恶意用户通过允许的HTML标签执行XSS更会威胁到整个网站的安全。所以我们需要使用BBCODE来代替HTML完成部分开放给用户使用的HTML标签来达到最终效果。 BBCODE在输出后还需要转为HTML格式才能够被浏览器识别正确显示样式,以下函数支持 "文字倾斜","文字加粗","文字下划线","图片","链接","文字大小","文字颜色","字体"。

    function bb2html($text){
       $bbcode = array(
          "/\[i\](.*?)\[\/i\]/is",
          "/\[b\](.*?)\[\/b\]/is",
          "/\[u\](.*?)\[\/u\]/is",
          "/\[img\](.*?)\[\/img\]/is",
          "/\[url=(.*?)\](.*?)\[\/url\]/is",
          "/\[size=(.*?)\](.*?)\[\/size\]/is",
          "/\[color=(.*?)\](.*?)\[\/color\]/is",
          "/\[font=(.*?)\](.*?)\[\/font\]/is",
       );
       $html = array(
          "<i>$1</i>",
          "<b>$1</b>",
          "<u>$1</u>",
          "<img src=\"$1\" />",
          "<a href=\"$1\" target=\"_blank\">$2</a>",
          '<font size=$1>$2</font>',
          '<font color=$1>$2</font>',
          '<font face=$1>$2</font>',
       );
       $newtext = nl2br(preg_replace($bbcode, $html, $text));
       return $newtext;
    }
  PHP默认已经带有 BBCODE转换 但需要安装 PECL 扩展 http://www.php.net/manual/zh/book.bbcode.php 

本文发布于: 2014-01-29 18:39:06,作者: Zack Lee。 属于: Web, PHP 分类,被贴了 php 标签。


> 评论区域

评论系统维护中

还没有人参与评论