php html ubb,PHP写的UBB代码转换HTML代码

[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', '%s'),

$this->parseimg('\\1', '\\2', '\\3'),

'%5C2',//1

'%5C2',//2

'%5C2',//3

'

%5C2

',//4

'%5C1',//5

'%5C1',//6

'%5C1',//7

'

%5C1

',//8

'%5C1',//9

'%5C1',//10

'%5C1',//11

'

%5C1

',//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',

'

',

'

',

'

',

'

',

'

',

'

',

'

',

'

',

'',

'',

'',

'',

'',

'',

'',

'

  • ',

'

',

'

  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 ',

'

\2
',

'\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_get_contents().'
'.$str[$i+1];

ob_end_clean();

}

$str = $tmp;

unset($tmp);

}

return $str;

}

}

?>

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值