ubb() 函式處理所有常見 UBB 標籤eregi_replace()(不分大小寫)與 preg_replace()(支援貪婪/非貪婪模式)混合function ubb($str) {
$color = array('red', 'blue', 'green');
// URL 處理:三種格式
$str = eregi_replace('\[url\]([a-zA-Z0-9@:%_.~#-\?&]+)\[/url\]',
'\\1', $str);
$str = eregi_replace('\[url=https://([a-zA-Z0-9@:%_.~#-\?&]+)\](.+)\[/url\]',
'\\2', $str);
$str = eregi_replace('\[url=([a-zA-Z0-9@:%_.~#-\?&]+)\](.+)\[/url\]',
'\\2', $str);
// 圖片
$str = eregi_replace('\[img\]([a-zA-Z0-9@:%_.~#-\?&]+)\[/img\]',
'
', $str);
// 標題 H1-H6
$str = eregi_replace('\[h([1-6])\](.+)\[/h[1-6]\]',
'\\2 ', $str);
// Email
$str = eregi_replace('\[email\]([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})\[/email\]',
'\\1', $str);
$str = eregi_replace('\[email=([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})\](.+)\[/email\]',
'\\2', $str);
// 文字樣式
$str = eregi_replace('\[b\](.+)\[/b\]', '\\1', $str);
$str = eregi_replace('\[i\](.+)\[/i\]', '\\1', $str);
$str = eregi_replace('\[size=(.+)\](.+)\[/size\]', '\\2', $str);
$str = eregi_replace('\[color=(.+)\](.+)\[/color\]', '\\2', $str);
// 上下標
$str = eregi_replace('\[sub\](.+)\[/sub\]', '\\1', $str);
$str = eregi_replace('\[sup\](.+)\[/sup\]', '\\1', $str);
// 顏色快捷標籤
for ($i = 0; $i < count($color); $i++) {
$str = eregi_replace('\['.$color[$i].'\](.+)\[/'.$color[$i].'\]',
'\\1', $str);
}
// 區塊標籤:使用 preg_replace 非貪婪模式 (.*?)
$str = preg_replace("/\[quote\](.+?)\[\/quote\]/is",
"quote:
\\1
", $str);
$str = preg_replace("/\[code\](.+?)\[\/code\]/is",
"code:
\\1
", $str);
$str = preg_replace("/\[sig\](.+?)\[\/sig\]/is",
"
--------------------------
\\1
--------------------------", $str);
return $str;
}
| UBB 標籤 | 輸出 HTML | 備註 |
|---|---|---|
[url]...[/url] | <a href="https://...">...</a> | 自動補 https:// |
[url=https://...]文字[/url] | <a href="..." target="_blank">文字</a> | 新視窗開啟 |
[img]https://...[/img] | <img src="https://..."> | |
[h1]~[h6]標題[/h1]~[/h6] | <h1>~<h6>標題</h1>~</h6> | |
[email]mail@domain[/email] | <a href="mailto:mail@domain">mail@domain</a> | |
[b]粗體[/b] | <b>粗體</b> | |
[i]斜體[/i] | <i>斜體</i> | |
[size=n]文字[/size] | <font size="n">文字</font> | |
[color=red]文字[/color] | <font color="red">文字</font> | 亦支援 [red]文字[/red] 快捷寫法 |
[sub]下標[/sub] | <sub>下標</sub> | |
[sup]上標[/sup] | <sup>上標</sup> | |
[quote]引用[/quote] | 引用區塊(灰底、縮排、水平線) | 非貪婪匹配,支援巢狀 |
[code]程式碼[/code] | 程式碼區塊(等寬字體、藍線框) | |
[sig]簽名[/sig] | 簽名檔區塊(深綠、靠左、分隔線) |
$input = "[b]歡迎[/b]來到[url=https://example.com]範例網站[/url]!\n[quote]這是引用內容[/quote]";
echo ubb($input);
輸出:<b>歡迎</b>來到<a href="https://example.com" target="_blank">範例網站</a>!<blockquote>...</blockquote>
eregi_replace()(PHP 5.3+ 移除),改用 preg_replace() 並加 i 修飾符。