一个UBB的PHP类

/*Text Encode ClassWrite by q3boy 2003.3.10usage:$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"<hr>";echo $eq->ubbEncode();           //输出ubb编码后字符串echo"<hr>";echo $eq->removeHtml();          //输出移除html标签的字符串echo"<hr>";echo $eq->ubbEncode();           //输出移除ubb标签的字符串支持ubb标签列表:图片类:[img]gif/aaa.gif[/img]    插入图片[limg]gif/aaa.gif[/limg]  图片左绕排[rimg]gif/aaa.gif[/rimg]  图片右绕排[cimg]gif/aaa.gif[/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" onload="ImageLoad(this);" onClick="ImageOpen(this)" 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;                //语法高亮显示        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 "<script language=\"javascript\" type=\"text/javascript\">\r\nfunction ImageLoad(img) {\r\nif(img.width>480) img.width=480;\r\n}\r\nfunction ImageOpen(img) {\r\nwindow.open(img.src,'','menubar=no,scrollbars=yes,width='+(screen.width-8)+',height='+(screen.height-74)+',left=0,top=0');\r\n}\r\n</script>";        }        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;                $ary = array(                        '<'=>'&lt;',                         '>'=>'&gt;',                         " "=>"&nbsp;&nbsp;",                        " "=>"&nbsp;&nbsp;"                        );                $str = preg_replace("/\n{2,}/s","\n\n",strtr($str,$ary));                Return str_replace("\n","\n<br />",$str);        }        function ubbEncode($str='') {                if(!$str) $str = $this->str;                $rpl_ary = array();                $rpl_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\<br \/\>)*\[(php|code)\s*(.*?)\]\s*(.+?)\s*\[\/(php|code)\](\n\<br \/\>)*/is',$str,$ary);                        $str = preg_split('/(\n\<br \/\>)*\[(php|code)\s*(.*?)\]\s*(.+?)\s*\[\/(php|code)\](\n\<br \/\>)*/is',$str);                }                if($this->url){                        $reg_ary = array_merge($reg_ary,array(                                '/(?<!\]|\=)\s*(\b\w+@(?:\w+\.)+\w{2,3})\b\s*(?<!\[)/i',                                '/(?<!\]|\=)\s*(\b(http|https|ftp):\/\/(\w+\.)+\w+(\/[\w|&|%|\?|=|\+|\.|-]+)*)\b\s*(?<!\[)/i',                        ));                        $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*http(s?):\/\/(\S+)\s*\[\/img\]/i',                        '/\[limg\]\s*http(s?):\/\/(\S+)\s*\[\/limg\]/i',                        '/\[rimg\]\s*http(s?):\/\/(\S+)\s*\[\/rimg\]/i',                        '/\[cimg\]\s*http(s?):\/\/(\S+)\s*\[\/cimg\]/i',                        '/\[img\]\s*([^\/:]+)\s*\[\/img\]/i',                        '/\[limg\]\s*([^\/:]+)\s*\[\/limg\]/i',                        '/\[rimg\]\s*([^\/:]+)\s*\[\/rimg\]/i',                        '/\[cimg\]\s*([^\/:]+)\s*\[\/cimg\]/i',                        '/\[img\]\s*(\S+)\s*\[\/img\]/i',                        '/\[limg\]\s*(\S+)\s*\[\/limg\]/i',                        '/\[rimg\]\s*(\S+)\s*\[\/rimg\]/i',                        '/\[cimg\]\s*(\S+)\s*\[\/cimg\]/i',                        ));                        $rpl_ary = array_merge($rpl_ary,array(                        '<img src="http\1://\2"'.$tagfoot.'>',                        '<img src="http\1://\2"'.$tagfoot.' align="left">',                        '<img src="http\1://\2"'.$tagfoot.' align="right">',                        '<div align="center"><img src="http\1://\2"'.$tagfoot.'></div>',                        '<img src="'.$image.'/\1"'.$tagfoot.'>',                        '<img src="'.$image.'/\1"'.$tagfoot.' align="left">',                        '<img src="'.$image.'/\1"'.$tagfoot.' align="right">',                        '<div align="center"><img src="'.$image.'/\1"'.$tagfoot.'></div>',                        '<img src="\1"'.$tagfoot.'>',                        '<img src="\1"'.$tagfoot.' align="left">',                        '<img src="\1"'.$tagfoot.' align="right">',                        '<div align="center"><img src="\1"'.$tagfoot.'></div>',                        ));                }                if($this->font) {                        $reg_ary = array_merge($reg_ary,array(                        '/\[br\]/i',                        '/\[b\]\s*(.+?)\s*\[\/b\]/is',                        '/\[i\]\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\]\s*(.+?)\s*\[\/left\]/is',                        '/\[right\]\s*(.+?)\s*\[\/right\]/is',                        '/\[center\]\s*(.+?)\s*\[\/center\]/is',                        '/\[align=\s*(left|center|right)\]\s*(.+?)\s*\[\/align\]/is',                        '/\[size=\s*([\.|\d])\s*\]\s*(.*?)\s*\[\/size\]/is',                        '/\[font=\s*(.*?)\s*\]\s*(.*?)\s*\[\/font\]/is',                        '/\[color=\s*(.*?)\s*\]\s*(.*?)\s*\[\/color\]/is',                        '/\[list\]\s*(<br \/>)?\s*(.+?)\s*\[\/list\]/is',                        '/\[list=s\]\s*(<br \/>)?\s*(.+?)\s*\[\/list\]/is',                        '/\[list=(A|1|I)\]\\s*(<br \/>)?\s*(.+?)\s*\[\/list\]/is',                        '/\[list=(\S+?)\]\s*(<br \/>)?\s*(.+?)\s*\[\/list\]/is',                        '/\[li\]\s*(.+?)\s*\[\/li\]/is',                        ));                        $rpl_ary = array_merge($rpl_ary,array(                        '<br />',                        '<b>\\1</b>',                        '<i>\\1</i>',                        '<u>\\1</u>',                        '<s>\\1</s>',                        '<sub>\\1</sub>',                        '<sup>\\1</sup>',                        '<div align="left">\\1</div>',                        '<div align="right">\\1</div>',                        '<div align="center">\\1</div>',                        '<div align="\\1">\\2</div>',                        '<font size=\\1pt;">\\2</font>',                        '<font face="\\1">\\2</font>',                        '<font color="\\1">\\2</font>',                        '<ul>\\2</ul>',                        '<ol>\\2</ol>',                        '<ol type="\\1">\\3</ol>',                        '<ol start="\\1">\\3</ol>',                        '<li>\\1</li>',                        ));                }                if($this->element){                        $reg_ary = array_merge($reg_ary,array(                        '/\[url=\s*(.+?)\s*\]\s*(.+?)\s*\[\/url\]/i',                        '/\[url]\s*(.+?)\s*\[\/url\]/i',                        '/\[email=\s*(.+?)\s*\]\s*(.+?)\s*\[\/email\]/i',                        '/\[email]\s*(.+?)\s*\[\/email\]/i',                        '/\[quote\]\s*(<br \/>)?\s*(.+?)\s*\[\/quote\]/is',                        '/\[iframe\]\s*(.+?)\s*\[\/iframe\]/is',                        '/\[iframe=\s*(\d+?)\s*\]\s*(.+?)\s*\[\/iframe\]/is',                        ));                        $rpl_ary = array_merge($rpl_ary,array(                        '<a href="\1" target="_blank"><img src="'.$icon.'/url.gif" border="0" alt="超链接地址" align="bottom">\2</a> ',                        '<a href="\1" target="_blank"><img src="'.$icon.'/url.gif" border="0" alt="超链接地址" align="bottom">\1</a> ',                        '<a href="mailto:\1"><img src="'.$icon.'/mail.gif" border="0" alt="电子邮件地址" align="bottom">\2</a> ',                        '<a href="mailto:\1"><img src="'.$icon.'/mail.gif" border="0" alt="电子邮件地址" align="bottom">\1</a> ',                        '<table cellpadding="0" cellspacing="0" border="0" width="90%" align="center" style="border:1px gray solid;"><tr><td><table width="100%" cellpadding="5" cellspacing="1" border="0"><tr><td width="100%">\2</td></tr></table></td></tr></table>',                        '<iframe src="\" name="ifr1" frameborder="0" allowtransparency="true" scrolling="yes" width="100%" height="340" marginwidth="0" marginheight="0" hspace="0" vspace="0">\1</iframe><br><a href="\1" target="_blank">如果你的浏览器不支持嵌入框,请点这里查看</a>',                        '<iframe src="\2" name="ifr1" frameborder="0" allowtransparency="true" scrolling="yes" width="100%" height="\1" marginwidth="0" marginheight="0" hspace="0" vspace="0">\2</iframe><br><a href="\2" target="_blank">如果你的浏览器不支持嵌入框,请点这里查看</a>',                        ));                }                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(                        '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"><param name="movie" value="\1" /><param name="quality" value="high" /><embed src="\1" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object>',                        '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="\1" height="\2"><param name="movie" value="\3" /><param name="quality" value="high" /><embed src="\3" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="\1" height="\2"></embed></object>'                        ));                }                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<sizeof($ary[4]); $i++) {                                ob_start();                                highlight_string(trim(strtr($ary[4][$i],array('&lt;'=>'<','&gt;'=>'>',"&nbsp;"=>" ","<br />"=>""))));                                $tmp .= '<table border=1 cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#055AA0" width=95%><tr><td><code>'.(trim($ary[3][$i])?trim($ary[3][$i]):'代码片段:').'</code><br /><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td width="100%" class="code">'.ob_get_contents().'</td></tr></table></td></tr></table>'.$str[$i+1];                                ob_end_clean();                        }                        $str = $tmp;                        unset($tmp);                }                Return $str;        }}//上面就是完整的UBB函数//下面是调用方法,$u=new EncodeQ3boy();echo $u->ubbEncode($_POST["ok"]);<form method=post action=""><textarea name="ok" rows="6" cols="60"></textarea><input type="submit"></form>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索list
, 标签
, this
, true
, 文字
, str
, |II|IS|S排|排错|错|
merge标签
php 继承多个类、php extends 多个类、php类调用 另一个类、php实例化一个类、php 一个文件多个类,以便于您获取更多的相关知识。

时间: 2024-12-24 21:06:59

一个UBB的PHP类的相关文章

java-为什么不可能创建一个继承OnTouchListener的类?

问题描述 为什么不可能创建一个继承OnTouchListener的类? Android SDK在TouchEvent有一个接口(android.view.View.OnTouchListener).我不知道为什么下面这一行是错误的.Eclipse在OnTouchListener报错. public class TouchHandler extends OnTouchListener{ 如果我改为public interface TouchHandler extends OnTouchListen

封装的一个asp.net验证码类

第一个反映是验证码的这些属性是否可以设置(也就是说是封装成一个类,然后以暴露公有属性和方法的方式来使用的,还是在直接在一般处理程序中实现了验证码的生成到输出),结果比较可惜,是后者...... 里面的算法感觉挺不错,至少对于我这种对算法几乎是不懂的人来说是这样,于是想到去封装一下她然后无耻地纳入自己的类库中去^^ old原文件如下:点击下载 首先分析一下这份代码中的不足(自己觉得的): 1.面向过程式的编程,如果要修改验证码的属性,例如修改字体的大小.背景颜色等细节的东西,需要去一般处理程序中找

一个PHP MySQL操作类...

<?php /** * MySQL 数据库操作工具类, 方便数据库操作. * 示例见底部注释. * @author: http://www.ideawu.net/blog/ */ class Mysql{ var $conn; var $query_list = array(); public $query_count = 0; public function __construct($c){ if(!isset($c['port'])){ $c['port'] = '3306'; } $ser

给网站添加一个注册表 之 “类的应用”

注册表 下面,我们用这个"注册表"类来写一个简单的"计数器"应用,代码如下: pagecount.asp: <!-- #Include File="registry_class_inc.asp" --><%Dim RegSet Reg = New RegistryObjectReg.Path = Server.MapPath("pagecount.xml") Const BaseCount = 8000 '计

ASP编写完整的一个IP所在地搜索类

ASP编写完整的一个IP所在地搜索类的修正文稿 修正了查询方法,查询的方法和追捕的一致:只是追捕会自动更正IP. 还有个函数的书写错误,也已经修正: 包括增加了一个IP地址正确性的验证函数.(只是从格式上判断) <% Server.ScriptTimeout = &HE10 '&H3C Response.Buffer = ("S.F." = "S.F.") Dim IpSearch '建立对象 Set IpSearch = New clsIpS

一个CFileFind的扩展类CFileFindExt

一.类CfileFindExt功能说明 大家经常需要对指定目录下的所有文件进行搜索或其它相同操作.若文件数很多,逐一对每个文件手工操作,很费时.本文提供一个搜索或处理指定目录下的所有文件的C++类.作者用基于层次遍历的非递归算法(以减少运行时的时间和空间开销)实现了一个 CFileFind 的扩展类 CFileFindExt,该类可以对指定目录下的所有文件进行搜索或相同的处理操作. 二.类 CFileFindExt 的接口说明及用法示例: 1.头文件.处理函数.以及类的声明: #include

介绍一个增强的数据库类CDataSet

因为MFC完全支持数据库应用程序的开发,所以大多数数据库应用都使用CDatabase和CRecordset类,并且类向导(Class Wizard)提供了快速简易的方式来使用这两个类.有一点不足的就是当应用程序涉及到多表数据库时,类向导将产生大量的关于记录集的源码文件使得工程给人的感觉很臃肿混乱. 本文介绍如何使用一个模板记录集类来降低类向导所产生的记录集文件的数量,同时增强记录集类(CRecordset)的功能.这个模板记录集类叫做:CDataSet.它的主要目的是降低代码量,为数据对象数组提

探讨C++实现一个不可被继承的类

C#和Java都提供了一种机制让一个类不能被继承,如C#中的sealed关键字和Java的final关键字,然而C++程序员就没这么好命了.不过C++也可以模拟出这种效果,原理基于:子类的构造函数会自动调用父类的构造函数,同理析构函数也是一样.如果父类的构造函数和析构函数被设为私有的话,那么子类就无法调用,也就达到了父类不可被继承的目的了.原理很简单,按此原理我也实作出一个自认为很实用的工具类,在此献下丑,欢迎大家批评: template< typename TDerive, typename

介绍一个简单的JavaScript类框架

  这篇文章主要介绍了一个简单的JavaScript类框架,有助于初学者理解JS类的创建与继承,需要的朋友可以参考下 在写work-in-progress JavaScript book一书时,对于javascript继承体系,我花费了相当的时间,并在该过程中研究了各种不同的模拟经典类继承的方案.这些技术方案中,我最为推崇的是base2与Prototype的实现. 从这些方案中,应该能提炼出一个具有其思想内涵的框架,该框架须具有简单.可重用.易于理解并无依赖等特点,其中简单性与可用性是重点.以下