首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP UBB 代碼解析器:EncodeQ3boy 類別完整實作與標籤支援表

     編輯:PHP 綜合知識

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 陣列新增正規式對應。
  • 大型社區建議改用 Markdown + HTML Purifier 或 s9e/TextFormatter 等現代方案。

EncodeQ3boy 展示了基於正規表達式的 UBB 解析器完整架構,適合中小型專案快速整合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved