什么是UBB代码
UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方使用这个程序)采用的一种特殊的TAG。UBB代码很简单,虽然功能很少,但基本实现了我们常用的一些功能.就是在PHP文件中可以自己定义的一些代码,然后可以根据这些代码实行相应的在HTML中也能实现的功能。
优点
相对HTML安全性高
使用简单,方便记忆
自定义功能强大,扩展性好(可以根据自己的需求定义,但一般最好使用一个通用的标准,如url,img)
有效减少数据库存储代码
缺点
排版功能弱
不允许交叉使用
UBB代码运行过程
UBB代码->解析转换->HTML code
实际上是通过PHP的正则表达式的替换函数进行替换,最后得到UBB代码
UBB->DB->解析->输出
UBB->解析->DB->输出
介绍几种简单的UBB代码
UBB 正则 HTML
[url] [/url] /(\[url\])(.*)(\[\/url\])/i <a href=
[b] [/b] /(\[b\])(.*)(\[\/b\])/i <b>
[img] [/img] /(\[img\])(.*)(\[\/img\])/i <img src=
[url] [/url] /(\[url\])(.*)(\[\/url\])/i <a href=
[b] [/b] /(\[b\])(.*)(\[\/b\])/i <b>
[img] [/img] /(\[img\])(.*)(\[\/img\])/i <img src=
写一个自己的UBB
<?php function get_ubb($str) { $str = preg_replace( "/(\[)em(.*?)(\])/i" , "<img src=\"emot/em\\2.gif\" />", $str); //链接UBB $str = preg_replace( "/(\[url\])(.*)(\[\/url\])/i" , "<a href=\\2 target=\"new\">\\2</a>", $str); //QQ号码UBB $str = preg_replace( "/\[qq\]([0-9]*)\[\/qq\]/i" , "<a target=\"_blank\" href=\"tencent://message/?uin=\${1}&site=www.php100.com&menu=yes\"><img src=\"http://wpa.qq.com/pa?p=1:\${1}:8\" alt=\"QQ\${1}\" height=\"16\" border=\"0\" align=\"top\" /></a>" , $str); //链接 $str = preg_replace( "/(\[b\])(.*)(\[\/b\])/i" , "<b>\\2</b>" ,$str); //加粗 return $str; } if ($_POST['sub' ]){ echo get_ubb($_POST[message]); } ?> < script> function inserttag(topen,tclose){ var themess = document.getElementById('con' );//编辑对象 themess.focus(); if (document.selection) {//如果是否ie浏览器 var theSelection = document.selection.createRange().text; //获取选区文字 //alert(theSelection); if(theSelection){ document.selection.createRange().text = theSelection = topen+theSelection+tclose;//替换 } else{ document.selection.createRange().text = topen+tclose; } theSelection= ''; } else{ //其他浏览器 var scrollPos = themess.scrollTop; var selLength = themess.textLength; var selStart = themess.selectionStart; //选区起始点索引,未选择为0 var selEnd = themess.selectionEnd; //选区终点点索引 if (selEnd <= 2) selEnd = selLength; var s1 = (themess.value).substring(0,selStart); //截取起始点前部分字符 var s2 = (themess.value).substring(selStart, selEnd) //截取选择部分字符 var s3 = (themess.value).substring(selEnd, selLength); //截取终点后部分字符 themess.value = s1 + topen + s2 + tclose + s3; //替换 themess.focus(); themess.selectionStart = newStart; themess.selectionEnd = newStart; themess.scrollTop = scrollPos; return; } } </ script> < hr/> < font size =2 > < img src ="emot/em_01.gif" onclick= 'inserttag("[em_01","]");' /> < img src ="emot/em_02.gif" onclick= 'inserttag("[em_02","]");' /> < img src ="emot/em_03.gif" onclick= 'inserttag("[em_03","]");' /> < img src ="emot/em_04.gif" onclick= 'inserttag("[em_04","]");' /> < img src ="emot/em_05.gif" onclick= 'inserttag("[em_05","]");' /> < img src ="emot/em_06.gif" onclick= 'inserttag("[em_06","]");' /> < img src ="emot/em_07.gif" onclick= 'inserttag("[em_07","]");' /> < img src ="emot/em_08.gif" onclick= 'inserttag("[em_08","]");' /> < a href ="javascript:void(0);" onclick= 'inserttag("[b]","[/b]");' >加粗 </ a> < a href ="javascript:void(0);" onclick= 'inserttag("[qq]","[/qq]");' >QQ号 </ a> < a href ="javascript:void(0);" onclick= 'inserttag("[url]","[/url]");' >超链接 </ a> < br> </ font> <form action= "" method ="post" > <textarea name= "message" id= "con" cols = "70%" rows ="10" ></ textarea> <br > < input type = "submit" name ="sub" value= "提交"/> </ form>