[PHP]代码<?php
/*
* @author:zhangwj
* @data:2012-01-10
* @content:UBB Convert HTML
* @email:zhangwj.9991.com@gmail.com
$eq = new EncodeQ3boy($str);初始化类
//以下为ubbEncode参数
$eq->url = true; //启用url自动解析 默认false
$eq->html = true; //启用HTML编码(处理,全角/半角空格,制表符,换行符)默认true
$eq->image = true; //启用图象标签解析 默认true
$eq->font = true; //启用字体标签解析 默认true
$eq->element = true; //启用外部元素解析 默认true
$eq->flash = true; //启用Flash解析 默认true
$eq->php = true; //启用语法高亮显示 默认true
//ubbEncode参数结束
echo($eq->getImageOpener());//输出图片自动缩放所需js函数
echo $eq->htmlEncode(); //输出ubb编码后字符串
echo"
";
echo $eq->ubbEncode(); //输出ubb编码后字符串
echo"
";
echo $eq->removeHtml(); //输出移除html标签的字符串
echo"
";
echo $eq->ubbEncode(); //输出移除ubb标签的字符串
支持ubb标签列表:
图片类:
[img]http://www.php.cn/[/img] 插入图片
[limg]http://www.php.cn/[/limg] 图片左绕排
[rimg]http://www.php.cn/[/rimg] 图片右绕排
[cimg]http://www.php.cn/[/cimg] 图片居中绕排
文本控制类:
[br] 换行符
[b]粗体字[b]
[i]斜体字[i]
[u]下划线[u]
[s]删除线[s]
[sub]文字下标[sub]
[sup]文字上标[sup]
[left]文字左对齐[left]
[right]文字右对齐[right]
[center]文字居中[center]
[align=(left|center|right)]文字对齐方式[align]
[size=([1-6])]文字大小[size]
[font=(字体)[font]
[color=(文字颜色)][color]
[list]无序列表[list]
[list=s]有序列表[list]
[list=(A|1|I)]有序列表(列表方式为(abc,123,I II III))[list]
[list=(num)]有序列表(自num开始计数)[list]
[li]列表单元项[li]
外部元素类:
[url]链接[/url]
[url=(链接)]链接文字[/url]
[email]邮件地址[/email]
[email=(邮件地址)]说明文字[/email]邮件地址
[quote]引用块[/quote]
[iframe]内插帧地址[/iframe]
[iframe=(内插帧高度)]内插帧地址[/iframe]
[swf]flash动画地址[/swf]
[swf=宽度,高度]flash动画地址[/swf]
代码块:
[code][/code]
[php][/php]
[code 代码块名称][/code]
[php 代码块名称][/php]
如需使用php语法高亮请务必在代码块两端加上"?>"标签
*/
class EncodeQ3boy {
var $str = "";
var $iconpath = "/image/icon";//图标文件路径
var $imagepath = "/upfiles/article";//图片文件默认路径
//var $tagfoot = ' border="1" οnlοad="ImageLoad(this);" onClick="ImageOpen(this)" style="cursor: hand" ';//图片文件附加属性
var $tagfoot = ' border="1" style="cursor: hand" ';//图片文件附加属性
var $url = false; //url自动解析
var $html = true; //HTML编码
var $image = true; //解析图象标签
var $font = true; //字体标签
var $element = true; //外部元素
var $flash = true; //Flash
var $php = true; //语法高亮显示
var $others = true;//ubb转换时候的其他处理
function EncodeQ3boy($str='',$imgph='') {
if($str) {
$str = strtr($str,array("\n\r"=>"\n","\r\n"=>"\n","\r"=>"\n"," "=>" "));
$this->str = $str;
}
if($imgph) $this->imagepath = $imgph;
}
function getImageOpener() {
return "";
}
function removeHtml($str='') {
if(!$str) $str = $this->str;
return strip_tags($str);
}
function removeUbb($str='') {
if(!$str) $str = $this->str;
return preg_replace("/\[\/?\w+(\s+[^\]\s]+)*\s*\]/is","",$str);
}
function htmlEncode($str='') {
if(!$str) $str = $this->str;
$str = preg_replace("/\n{2,}/s","\n\n",$str);
return str_replace("\n","\n
",$str);
}
function bbcodeurl($url, $tags) {
if(!preg_match("/<.>/s", $url)) {
return sprintf($tags, $url, addslashes($url));
} else {
return ' '.$url;
}
}
function parseimg($width, $height, $src) {
return $this->bbcodeurl($src, ' 0 ? " width=\"$width\"" : '').($height > 0 ? " height=\"$height\"" : '')." src=\"$src\" border=\"0\" alt=\"\" />");
}
function ubbEncode($str='') {
if(!$str) $str = $this->str;
$rpl_ary = array();
$reg_ary = array();
if($this->html) $str = $this->htmlEncode($str,true);
$tagfoot = $this->tagfoot;
$icon = $this->iconpath;
$image = $this->imagepath;
if($this->php) {
preg_match_all('/(\n\
)*\[(php|code)\s*(.*?)\]\s*(.+?)\s*\[\/(php|code)\](\n\
)*/is',$str,$ary);
$str = preg_split('/(\n\
)*\[(php|code)\s*(.*?)\]\s*(.+?)\s*\[\/(php|code)\](\n\
)*/is',$str);
}
if($this->url){
$reg_ary = array_merge($reg_ary,array(
'/(?
'/(?
));
$rpl_ary = array_merge($rpl_ary,array(
'[email]\\1[/email]',
'[url]\\1[/url]',
));
}
if($this->image) {
$reg_ary = array_merge($reg_ary,array(
"/\[img\]\s*([^\[\
"/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\
'/\[img\]\s*http(s?):\/\/(\S+)\s*\[\/img\]/i',//1
'/\[limg\]\s*http(s?):\/\/(\S+)\s*\[\/limg\]/i',//2
'/\[rimg\]\s*http(s?):\/\/(\S+)\s*\[\/rimg\]/i',//3
'/\[cimg\]\s*http(s?):\/\/(\S+)\s*\[\/cimg\]/i',//4
'/\[img\]\s*([^\/:]+)\s*\[\/img\]/i',//5
'/\[limg\]\s*([^\/:]+)\s*\[\/limg\]/i',//6
'/\[rimg\]\s*([^\/:]+)\s*\[\/rimg\]/i',//7
'/\[cimg\]\s*([^\/:]+)\s*\[\/cimg\]/i',//8
'/\[img\]\s*(\S+)\s*\[\/img\]/is',//9
'/\[limg\]\s*(\S+)\s*\[\/limg\]/i',//10
'/\[rimg\]\s*(\S+)\s*\[\/rimg\]/i',//11
'/\[cimg\]\s*(\S+)\s*\[\/cimg\]/i',//12
));
$rpl_ary = array_merge($rpl_ary,array(
$this->bbcodeurl('\\1', ''),
$this->parseimg('\\1', '\\2', '\\3'),
'',//1
'',//2
'',//3
'
',//4'',//5
'',//6
'',//7
'
',//8'',//9
'',//10
'',//11
'
',//12));
}
if($this->font) {
$reg_ary = array_merge($reg_ary,array(
'/\[br\]/i',
'/\[b\]/i',
'/\[\/b\]/i',
'/\[i(=s)?\]\s*(.+?)\s*\[\/i\]/is',
'/\[u\]\s*(.+?)\s*\[\/u\]/is',
'/\[s\]\s*(.+?)\s*\[\/s\]/is',
'/\[sub\]\s*(.+?)\s*\[\/sub\]/is',
'/\[sup\]\s*(.+?)\s*\[\/sup\]/is',
'/\[left\]/i',
'/\[\/left\]/i',
'/\[right\]/i',
'/\[\/right\]/i',
'/\[center\]/i',
'/\[\/center\]/i',
'/\[align=\s*(left|center|right)\]/i',
'/\[\/align\]/i',
'/\[size=\s*([\.|\d])\s*\]/i',
'/\[\/size\]/i',
'/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i',
'/\[font=\s*(.*?)\s*\]/i',
'/\[\/font\]/i',
'/\[color=\s*(.*?)\s*\]/i',
'/\[\/color\]/i',
'/\[list\]/i',
'/\[\/list\]/i',
'/\[list=s\]/i',
'/\[\/list\]/i',
'/\[list=(A|1|I)\]/i',
'/\[\/list\]/i',
'/\[list=(\S+?)\]/i',
'/\[\/list\]/i',
'/\[li\]/i',
'/\[\/li\]/i',
'/\[p=(\d{1,2}), (\d{1,2}), (left|center|right)\]/i',
'/\[float=(left|right)\]/i'
));
$rpl_ary = array_merge($rpl_ary,array(
'
',
'',
'',
'\\2',
'\\1',
'\\1',
'\\1',
'\\1',
'
',
'
','
',
'
','
',
'
','
',
'
','',
'',
'',
'',
'',
'',
'',
'
- ',
'
','
- ',
'
','
- ',
'
','
- ',
'
','
','
','
',
''
));
}
if($this->element){
$reg_ary = array_merge($reg_ary,array(
'/\[url=\s*(.+?)(,1)?\s*\]\s*(.+?)\s*\[\/url\]/i',
'/\[url]\s*(.+?)\s*\[\/url\]/i',
'/\[email=\s*(.+?)\s*\]\s*(.+?)\s*\[\/email\]/i',
'/\[email]\s*(.+?)\s*\[\/email\]/i',
'/\[quote\]\s*(
)?\s*(.+?)\s*\[\/quote\]/is',
'/\[iframe\]\s*(.+?)\s*\[\/iframe\]/is',
'/\[iframe=\s*(\d+?)\s*\]\s*(.+?)\s*\[\/iframe\]/is',
));
$rpl_ary = array_merge($rpl_ary,array(
'\3 ',
'\1 ',
'\2 ',
'\1 ',
'
|
'\1如果你的浏览器不支持嵌入框,请点这里查看',
'\2如果你的浏览器不支持嵌入框,请点这里查看',
));
}
if($this->flash){
$reg_ary = array_merge($reg_ary,array(
'/\[swf\]\s*(.+?)\s*\[\/swf\]/i',
'/\[swf=(\d+)\,(\d+)\]\s*(.+?)\s*\[\/swf\]/i'
));
$rpl_ary = array_merge($rpl_ary,array(
'',
''
));
}
if($this->others){//处理特殊ubb问题
$reg_ary = array_merge($reg_ary,array(
'/\[upload=\d+]/i',
'/\[attachment=(\d+?)\]/i',
'/\[attach\]\s*(\d+?)\s*\[\/attach\]/i',
'/\[qq\]\s*(\d+?)\s*\[\/qq\]/i',
'/\[indent\]/i',
'/\[\/indent\]/i'
));
$rpl_ary = array_merge($rpl_ary,array(
'',
'',
'\\1',
'QQ:\\1',
'
',''
));
}
if(sizeof($reg_ary)&&sizeof($rpl_ary))$str = preg_replace($reg_ary,$rpl_ary,$str);
if($this->php) {
$tmp = $str[0];
for($i=0; $i
ob_start();
highlight_string(trim(strtr($ary[4][$i],array('<'=>''>'," "=>" ","
"=>""))));
$tmp .= '
'.(trim($ary[3][$i])?trim($ary[3][$i]):'代码片段:').'
|
ob_end_clean();
}
$str = $tmp;
unset($tmp);
}
return $str;
}
}
?>
相关标签:php
本文原创发布php中文网,转载请注明出处,感谢您的尊重!