[PHP] BBCode Parser (簡單的BBCode to HTML 的function)

最近有個web2.0的project,安全理由當然不會讓用戶用HTML發表內容

所以就選擇上一些BBCODE 的編輯框,保存到SQL是BBCODE這個問題不大

但解讀時就需要用PHP來翻譯一下BBCODE,將BBCODE轉義為HTML

基本上都知怎麼做,但想取一下靈感就上網找一些簡單的class , function 起步

github有非常多,但因為我自己個人對編輯器做了特殊的修改,所以用別人的class會有些不便,同時有些作品太過大型,我想小巧易改一點

所以就想了下面這個簡單的function開始

基本上沒有特別功能的可以直接使用

但我認為還需要加2~3個功能:
1. 表情附號的轉義
2. 自動感應link / 圖片型的網址 / youtube 等等

<?php

/* Simple PHP BBCode Parser function */

//BBCode Parser function

function showBBcodes($text) {

// BBcode array
$find = array(
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[quote\](.*?)\[/quote\]~s',
'~\[size=(.*?)\](.*?)\[/size\]~s',
'~\[color=(.*?)\](.*?)\[/color\]~s',
'~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
);

// HTML tags to replace BBcode
$replace = array(
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<pre>$1</'.'pre>',
'<span style="font-size:$1px;">$2</span>',
'<span style="color:$1;">$2</span>',
'<a href="$1">$1</a>',
'<img src="$1" alt="" />'
);

// Replacing the BBcodes with corresponding HTML tags
return preg_replace($find,$replace,$text);
}

// How to use the above function:

$bbtext = "This is [b]bold[/b] and this is [u]underlined[/u] and this is in [i]italics[/i] with a [color=red] red color[/color]";
$htmltext = showBBcodes($bbtext);
echo $htmltext;

?>
Related Posts Plugin for WordPress, Blogger...
標籤: