UBB (Universal Bulletin Board) 代碼是論壇常用的輕量標記語言。本文提供功能完整的 EncodeQ3boy PHP 類別,支援圖片、字體、列表、連結、引用、Flash、代碼高亮等豐富標籤,並內建 HTML 編碼、XSS 防護與圖片自動縮放 JS。
| 分類 | 標籤 | 說明 |
|---|---|---|
| 圖片 | [img]url[/img] | 插入圖片 |
[limg]url[/limg] | 左浮動 | |
[rimg]url[/rimg] | 右浮動 | |
[cimg]url[/cimg] | 置中 | |
| 文字 | [b]...[/b] [i]...[/i] [u]...[/u] [s]...[/s] | 粗體/斜體/底線/刪除線 |
[sub]...[/sub] [sup]...[/sup] | 下標/上標 | |
[left]...[/left] [center]...[/center] [right]...[/right] | 對齊 | |
[size=n]...[/size] (1-6) | 字體大小 | |
[font=名稱]...[/font] | 字體 | |
[color=顏色]...[/color] | 文字顏色 | |
[list]...[/list] | 無序列表 | |
[list=1|A|I]...[/list] | 有序列表 | |
[li]...[/li] | 列表項 | |
| 外部元素 | [url]...[/url] [url=連結]文字[/url] | 超連結 |
[email]...[/email] | 郵件連結 | |
[quote]...[/quote] | 引用區塊 | |
[iframe]...[/iframe] | 內嵌框架 | |
[swf]...[/swf] [swf=寬,高]...[/swf] | Flash | |
| 代碼 | [code]...[/code] [php]...[/php] | 代碼區塊(PHP 需包含 <? ?> 才高亮) |
class EncodeQ3boy {
var $str = '';
var $url = false; // 自動解析 URL
var $html = true; // HTML 編碼
var $image = true; // 圖片標籤
var $font = true; // 字體標籤
var $element = true;// 外部元素
var $flash = true; // Flash
var $php = true; // PHP 高亮
function ubbEncode($str = '') {
// 1. HTML 編碼(換行、空格、實體化)
// 2. 代碼區塊預處理(分離出來稍後高亮)
// 3. 依序套用正規表達式替換:URL、圖片、字體、元素、Flash
// 4. 代碼區塊高亮(highlight_string)並重組
return $final_html;
}
function htmlEncode($str) { /* 基礎 HTML 實體化與換行處理 */ }
function removeHtml($str) { return strip_tags($str); }
function removeUbb($str) { return preg_replace('/\[\/?\w+(\s+[^\]]+)*\s*\]/is', '', $str); }
function getImageOpener() { /* 回傳圖片縮放/點擊放大 JS */ }
}
<?php
require_once('EncodeQ3boy.php');
$parser = new EncodeQ3boy($_POST['content'] ?? '');
$parser->url = true; // 啟用自動 URL 連結
echo $parser->getImageOpener(); // 輸出圖片 JS
echo $parser->ubbEncode();
?>
<form method="post">
<textarea name="content" rows="10" cols="80"></textarea>
<input type="submit" value="預覽">
</form>
htmlEncode() 防 XSS。[video]、[audio]、[table] 等標籤,只需在 $reg_ary/$rpl_ary 陣列新增正規式對應。EncodeQ3boy 展示了基於正規表達式的 UBB 解析器完整架構,適合中小型專案快速整合。