PHP写的UBB代码转换HTML代码
php
[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"<hr>"; echo $eq->ubbEncode(); //输出ubb编码后字符串 echo"<hr>"; echo $eq->removeHtml(); //输出移除html标签的字符串 echo"<hr>"; 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" onload="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 "<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; $str = preg_replace("/\n{2,}/s","\n\n",$str); return str_replace("\n","\n<br />",$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, '<img'.($width > 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\<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*([^\[\<\r\n]+?)\s*\[\/img\]/is", "/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", '/\[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', '<img src="%s" '.$tagfoot.'/>'), $this->parseimg('\\1', '\\2', '\\3'), '<img src="http\1://\2"'.$tagfoot.'>',//1 '<img src="http\1://\2"'.$tagfoot.' align="left">',//2 '<img src="http\1://\2"'.$tagfoot.' align="right">',//3 '<p align="center"><img src="http\1://\2"'.$tagfoot.'></p>',//4 '<img src="'.$image.'/\1"'.$tagfoot.'>',//5 '<img src="'.$image.'/\1"'.$tagfoot.' align="left">',//6 '<img src="'.$image.'/\1"'.$tagfoot.' align="right">',//7 '<p align="center"><img src="'.$image.'/\1"'.$tagfoot.'></p>',//8 '<img src="\1"'.$tagfoot.'>',//9 '<img src="\1"'.$tagfoot.' align="left">',//10 '<img src="\1"'.$tagfoot.' align="right">',//11 '<p align="center"><img src="\1"'.$tagfoot.'></p>',//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( '<br />', '<b>', '</b>', '<i>\\2</i>', '<u>\\1</u>', '<s>\\1</s>', '<sub>\\1</sub>', '<sup>\\1</sup>', '<p align="left">', '</p>', '<p align="right">', '</p>', '<p align="center">', '</p>', '<p align="\\1">', '</p>', '<font size="\\1pt">', '</font>', '<font style="font-size: \\1">', '<font face="\\1">', '</font>', '<font color="\\1">', '</font>', '<ul>', '</ul>', '<ol>', '</ol>', '<ol type="\\1">', '</ol>', '<ol start="\\1">', '</ol>', '<li>', '</li>', '<p style="line-height: \\1px; text-indent: \\2em; text-align: \\3;">', '<span style="float: \\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*(<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">\3</a> ', '<a href="\1" target="_blank">\1</a> ', '<a href="mailto:\1">\2</a> ', '<a href="mailto:\1">\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($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', '<blockquote>', '</blockquote>' )); } 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('<'=>'<','>'=>'>'," "=>" ","<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; } } ?>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
1週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
Atomfallのクレーンコントロールキーカードを見つける場所
1週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
