home
api
develop
badge
wallpaper
rhaco.org
PHP library & setup framework
lingr
bugs
jaja
arbo
rhaco_1_x
arbo rev. 30
trunk/text/BBCode.php
BBCodeフォーマッタ
30: BBCodeフォーマッタ
文字列 * * 斜体 * 記法 [i]文字列[/i] * 結果
文字列
* * 下線 * 記法 [u]文字列[/u] * 結果
文字列
* * 文字サイズ * 記法 [size=18]文字列[/size] * 結果
文字列
* * 文字色 * 記法 [color=red]文字列[/color] * 結果
文字列
* * コード * 記法 [code]文字列[/code] * 結果
文字列
* * 画像 * 記法 [img]url[/img] * 結果
* * リンク * 記法 [url=url]文字列[/url] * 結果
文字列
* * メール * 記法 [email]e-mail[/email] * 結果
e-mail
* * 引用 * 記法 [quote]文字列[/quote] * 結果
文字列
* * リスト * 記法:[list] * [*]アイテム1 * [*]アイテム2 * [/list] * 結果:
*
アイテム1
*
アイテム2
*
* * 記法:[list=type] * [*]アイテム1 * [*]アイテム2 * [/list] * 結果:
*
アイテム1
*
アイテム2
*
* * @author Kentaro YABE * @license New BSD License * @copyright Copyright 2008- rhaco project. All rights reserved. */ class BBCode{ function f($src){ /*** * $bb = new BBCode(); * eq("
文字列
",$bb->f("[b]文字列[/b]")); * eq("
文字列
",$bb->f("[i]文字列[/i]")); * eq("
文字列
",$bb->f("[u]文字列[/u]")); * eq("
文字列
",$bb->f("[size=18]文字列[/size]")); * eq("
文字列
",$bb->f("[color=red]文字列[/color]")); * eq("
",$bb->f("[img]url[/img]")); * eq("
文字列
",$bb->f("[url=url]文字列[/url]")); * eq("
e-mail
",$bb->f("[email]e-mail[/email]")); * eq("
文字列
",$bb->f("[quote]文字列[/quote]")); * eq("
\n
アイテム1
\n
アイテム2
\n
",$bb->f("[list=a]\n[*]アイテム1\n[*]アイテム2\n[/list]")); */ $src = TemplateFormatter::escape(StringUtil::toULD($src)); //non-nest tags $src = preg_replace("/\[b\](.*?)\[\/b\]/is","
\\1
",$src); $src = preg_replace("/\[i\](.*?)\[\/i\]/is","
\\1
",$src); $src = preg_replace("/\[u\](.*?)\[\/u\]/is","
\\1
",$src); $src = preg_replace("/\[size=(\d+?)\](.*?)\[\/size\]/is","
\\2
",$src); $src = preg_replace("/\[color=(.+?)\](.*?)\[\/color\]/is","
\\2
",$src); $src = preg_replace("/\[code\](.*?)\[\/code\]/is","
\\1
",$src); $src = preg_replace("/\[img\](.*?)\[\/img\]/is","
",$src); $src = preg_replace("/\[url\](.*?)\[\/url\]/is","
\\1
",$src); $src = preg_replace("/\[url=(.+?)\](.*?)\[\/url\]/is","
\\2
",$src); $src = preg_replace("/\[email\](.*?)\[\/email\]/is","
\\1
",$src); //blockquote $src = $this->_toQuote($src); //list $src = $this->_toList($src); return $src; } /** * 引用 * * @param string $src * @return string */ function _toQuote($src){ /*** #pass */ preg_match_all("/\[quote\]/i",$src,$opentags); preg_match_all("/\[\/quote\]/i",$src,$closetags); for($i=0;$i
",$src); $src = str_replace("[/quote]","",$src); return $src; } /** * リスト * * @param string $src * @return string */ function _toList($src){ /*** #pass */ preg_match_all("/\[list(?:=(.+?))?\]\n((?:\[\*\].+?\n)+)\[\/list\]/is",$src,$matches); foreach($matches[0] as $key=>$search){ $type = $matches[1][$key]; $openTag = ($type=="") ? "
" : "
"; $closeTag = ($type=="") ? "
" : ""; $replace = $openTag."\n"; preg_match_all("/^\[\*\](.+?)$/m",$matches[2][$key],$items); foreach($items[1] as $item){ $replace .= "
".$item."
\n"; } $replace .= $closeTag; $src = str_replace($search, $replace, $src); } return $src; } } ?>