UBB代码是HTML(标准通用标记语言下的一个应用)的一个变种,是Ultimate Bulletin Board (国外的一个BBS程序)采用的一种特殊的TAG。您也许已经对它很熟悉了。UBB代码很简单,功能很少,但是由于其Tag语法检查实现非常容易,所以不少网站引入了这种代码,以方便网友使用显示图片/链接/加粗字体等常见功能。例如:
[url]www.atool.org[/url]
加入带有说明的超级链接。
[url=http://www.atool.org]www.atool.org[/url]
[download=http://www.atool.org/2.zip]下载[/download]
[img]http://www.atool.org/res/logo...[/img]
显示你的图像,但请记住,http://是必须的
[b]粗体[/b]
粗体显示
[color=#0000FF]颜色[/color]
带有颜色的显示
UBB标记说明

不能混合使用 HTML 和 UBB 。

ubb和htm相互转换代码js


  1. //缺个quote
  2. function to_ubb(str){
  3. //str = str.replace(/(\r\n|\n|\r)/ig, '');
  4. str = str.replace(/<br[^>]*>/ig,'\n');
  5. str = str.replace(/<p[^>\/]*\/>/ig,'\n');
  6. //str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
  7. str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,'');
  8. str = str.replace(/<hr[^>]*>/ig,'[hr]');
  9. str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
  10. str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
  11. str = str.replace(/<(\/)?strong>/ig,'[$1b]');
  12. str = str.replace(/<(\/)?em>/ig,'[$1i]');
  13. str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]');
  14. str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[s:$1]');
  15. str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'[img]'+'$1'+'[/img]');
  16. str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,'[url=$1]'+'$2'+'[/url]');
  17. //str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4){return h($3,$4,$2);});
  18. str = str.replace(/<[^>]*?>/ig, '');
  19. str = str.replace(/&amp;/ig, '&');
  20. str = str.replace(/&lt;/ig, '<');
  21. str = str.replace(/&gt;/ig, '>');
  22. return str;
  23. }
  24. function to_html(str){
  25. str = str.replace(/</ig,'&lt;');
  26. str = str.replace(/>/ig,'&gt;');
  27. str = str.replace(/\n/ig,'<br />');
  28. str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
  29. str = str.replace(/\[hr\]/ig,'<hr />');
  30. str = str.replace(/\[\/(size|color|font|backcolor)\]/ig,'</font>');
  31. str = str.replace(/\[(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'<$1>');
  32. str = str.replace(/\[\/(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'</$1>');
  33. str = str.replace(/\[\/align\]/ig,'</p>');
  34. str = str.replace(/\[(\/)?h([1-6])\]/ig,'<$1h$2>');
  35. str = str.replace(/\[align=(left|center|right|justify)\]/ig,'<p align="$1">');
  36. str = str.replace(/\[size=(\d+?)\]/ig,'<font size="$1">');
  37. str = str.replace(/\[color=([^\[\<]+?)\]/ig, '<font color="$1">');
  38. str = str.replace(/\[backcolor=([^\[\<]+?)\]/ig, '<font style="background-color:$1">');
  39. str = str.replace(/\[font=([^\[\<]+?)\]/ig, '<font face="$1">');
  40. str = str.replace(/\[list=(a|A|1)\](.+?)\[\/list\]/ig,'<ol type="$1">$2</ol>');
  41. str = str.replace(/\[(\/)?list\]/ig,'<$1ul>');
  42. str = str.replace(/\[s:(\d+)\]/ig,function($1,$2){ return smilepath($2);});
  43. str = str.replace(/\[img\]([^\[]*)\[\/img\]/ig,'<img src="$1" border="0" />');
  44. str = str.replace(/\[url=([^\]]+)\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$2'+'</a>');
  45. str = str.replace(/\[url\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$1'+'</a>');
  46. var quote= function(q){
  47. var cls=new Array();
  48. // '<div ><BLOCKQUOTE><font size=1 face=""Verdana, Arial"">quote:</font><HR>"'+$2+'"<HR></BLOCKQUOTE>"';});
  49. //cls[0]='<BLOCKQUOTE><div style="display: block; position: relative; border: 1px dotted #dddddd; margin: 3px 3px 3px 3px; padding: 1.5em 0px 0px 0px; text-align:left;">';
  50. cls[0]='<div style="display: block; position: relative; border: 1px dotted #dddddd; margin: 3px 3px 3px 3px; padding: 1.5em 0px 0px 0px; text-align:left;">';
  51. cls[3]='<div style="position: absolute; top: 0px ; color: #777777; background: #ffffff; font-family: Serif;">'
  52. //cls[0]=cls[3]='<div>'
  53. cls[1]='</div>';
  54. //cls[2]=cls[1]+'</BLOCKQUOTE>';
  55. cls[2]=cls[1]
  56. var exec=function(str){
  57. //console.log(str[1]);
  58. //str2=str.toLowerCase()
  59. var l=str.toLowerCase().lastIndexOf("[/QUOTE]".toLowerCase())
  60. var f=str.toLowerCase().indexOf("[QUOTE".toLowerCase())
  61. console.log(l);
  62. console.log(f);
  63. if(l==-1){
  64. return str
  65. }else
  66. {
  67. var prev = str.slice(0,f)
  68. var t_str=str.slice(f+"[QUOTE".length,l)
  69. var lef =str.slice(l+"[/QUOTE]".length)
  70. console.log(t_str);
  71. if(t_str[0]=="="){
  72. var fa=t_str.toLowerCase().indexOf("]".toLowerCase())
  73. return prev+cls[0]+cls[3]+t_str.slice(1,fa)+cls[1]+exec(t_str.slice(1+fa))+cls[2]+lef
  74. }
  75. else if(t_str[0]=="]"){
  76. //var la=t_str.toLowerCase().lastIndexOf("]".toLowerCase())
  77. return prev+cls[0]+exec(t_str.slice(1))+cls[2]+lef
  78. } else{
  79. return t_str
  80. }
  81. }
  82. }//end of quote
  83. return exec(q)
  84. }//end of
  85. str=quote(str)
  86. return str;
  87. }

UBB代码的更多相关文章

  1. ThinkPHP HTML标签代码和UBB互相转换

    1.UBB 转为 HTML TP的扩展里面自带一个ubb方法,用这个方法就能把用户输入的ubb格式代码转换为HTML标签的代码.这里用到的基本知识就是正则表达式啦,今天先不讲正则表达式. 来看一下TP ...

  2. [ITSEC]信息安全·Web安全培训第一期客户端安全之UBB系列

    缩略图: 引文: 所谓UBB代码,是指论坛中的替代HTML代码的安全代码.ubb发帖编辑器 这种代码使用正则表达式来进行匹配,不同的论坛所使用的UBB代码很可能不同,不能一概而论.UBB代码的出现,使 ...

  3. [原创]-[WEB]代码高亮工具

    代码高亮显示,不是什么新鲜玩艺了,各种各样的插件多了去了.       一开始想在baidu空间里贴代码,用GeSHi生成的高亮HTML复制到编辑器就可以了,不过QQ空间却不行,复制过去的格式全部被清 ...

  4. web安全性测试用例

    建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 客户端验证 服务器端验证(禁用脚本调试,禁用Cookies) 1.输入很大的数(如4,29 ...

  5. C# 字符串操作类

    using System; using System.Collections.Generic; using System.Text; using System.Collections; using S ...

  6. php高级

    php面试题之一--PHP核心技术(高级部分) 一.PHP核心技术 1.写出一个能创建多级目录的PHP函数(新浪网技术部) <?php /** * 创建多级目录 * @param $path s ...

  7. C# 格式化字符串,日期,字符串操作汇总

    时间格式化 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:D ...

  8. c#.net常用字符串函数 字符串常用方法

    RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1);   //去掉最后一个逗号 Compare 比较字符串 ...

  9. (转)c#.net常用字符串函数

    Compare 比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等 CompareOrdinal 与Compare一样,但不考虑文化背景 Format 格式化包含各种值的字符串和如何格式化每 ...

随机推荐

  1. [LC] 809. Expressive Words

    Example: Input: S = "heeellooo" words = ["hello", "hi", "helo&quo ...

  2. rest framework-解析器和渲染器-长期维护

    ###############   解析器   ############### # 解析器----数据解析器, # # 前端发送了json数据,在request的body里面, # 我们需要把json ...

  3. linux上安装 mysql

    一.linux 上安装 mysql 1.查看mysql是否安装 rpm -qa|grep mysql 2.卸载 mysql yum remove mysql mysql-server mysql-li ...

  4. python之接口开发

    一.接口开发的思路 1.启动一个服务: 2.接受客户端传过来的数据: 3.登录,注册,支付等功能 4.操作数据库,拿到数据: 5.返回数据: import flask server=flask.Fla ...

  5. python中安装surprise中出现error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":

    pip安装 安装之前要先进行numpy的安装 pip install numpy pip install surprise 安装出错: 安装surprise需要Microsoft visual c++ ...

  6. 奇点云COO刘莹应邀出席《APEC SME大数据与人工智能论坛》

    10月24日-25日,由亚太经合组织(APEC).韩国中小型及初创企业管理局(the Ministry of SMEs & Startups of Korea)主办的「APEC SME 大数据 ...

  7. python语法基础-面向对象-基础-长期维护

    ###############    类的基本操作    ############## """ 类的基本认识: 1,类就是一个模子 2,dict,list都是类,具体的一 ...

  8. prisoners-of-war|

    The Nazi kept those ________ in their concentration camps.  A. prisoner-of-wars  B. prisoner-of-war ...

  9. revit卸载/完美解决安装失败/如何彻底卸载清除干净revit各种残留注册表和文件的方法

    在卸载revit重装revit时发现安装失败,提示是已安装revit或安装失败.这是因为上一次卸载revit没有清理干净,系统会误认为已经安装revit了.有的同学是新装的系统也会出现revit安装失 ...

  10. Dubbo与Nginx微服务架构

    Dubbo的负载均衡已经是服务层面的了,和nginx的负载均衡还在http请求层面完全不同.至于二者哪个优秀,当然没办法直接比较. 涉及到负载均衡就涉及到你的业务,根据业务来选择才是最适合的. dub ...