UBB代码
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
//缺个quote
function to_ubb(str){
//str = str.replace(/(\r\n|\n|\r)/ig, '');
str = str.replace(/<br[^>]*>/ig,'\n');
str = str.replace(/<p[^>\/]*\/>/ig,'\n');
//str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,'');
str = str.replace(/<hr[^>]*>/ig,'[hr]');
str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
str = str.replace(/<(\/)?strong>/ig,'[$1b]');
str = str.replace(/<(\/)?em>/ig,'[$1i]');
str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]');
str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[s:$1]');
str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'[img]'+'$1'+'[/img]');
str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,'[url=$1]'+'$2'+'[/url]');
//str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4){return h($3,$4,$2);});
str = str.replace(/<[^>]*?>/ig, '');
str = str.replace(/&/ig, '&');
str = str.replace(/</ig, '<');
str = str.replace(/>/ig, '>');
return str;
}
function to_html(str){
str = str.replace(/</ig,'<');
str = str.replace(/>/ig,'>');
str = str.replace(/\n/ig,'<br />');
str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
str = str.replace(/\[hr\]/ig,'<hr />');
str = str.replace(/\[\/(size|color|font|backcolor)\]/ig,'</font>');
str = str.replace(/\[(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'<$1>');
str = str.replace(/\[\/(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'</$1>');
str = str.replace(/\[\/align\]/ig,'</p>');
str = str.replace(/\[(\/)?h([1-6])\]/ig,'<$1h$2>');
str = str.replace(/\[align=(left|center|right|justify)\]/ig,'<p align="$1">');
str = str.replace(/\[size=(\d+?)\]/ig,'<font size="$1">');
str = str.replace(/\[color=([^\[\<]+?)\]/ig, '<font color="$1">');
str = str.replace(/\[backcolor=([^\[\<]+?)\]/ig, '<font style="background-color:$1">');
str = str.replace(/\[font=([^\[\<]+?)\]/ig, '<font face="$1">');
str = str.replace(/\[list=(a|A|1)\](.+?)\[\/list\]/ig,'<ol type="$1">$2</ol>');
str = str.replace(/\[(\/)?list\]/ig,'<$1ul>');
str = str.replace(/\[s:(\d+)\]/ig,function($1,$2){ return smilepath($2);});
str = str.replace(/\[img\]([^\[]*)\[\/img\]/ig,'<img src="$1" border="0" />');
str = str.replace(/\[url=([^\]]+)\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$2'+'</a>');
str = str.replace(/\[url\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$1'+'</a>');
var quote= function(q){
var cls=new Array();
// '<div ><BLOCKQUOTE><font size=1 face=""Verdana, Arial"">quote:</font><HR>"'+$2+'"<HR></BLOCKQUOTE>"';});
//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;">';
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;">';
cls[3]='<div style="position: absolute; top: 0px ; color: #777777; background: #ffffff; font-family: Serif;">'
//cls[0]=cls[3]='<div>'
cls[1]='</div>';
//cls[2]=cls[1]+'</BLOCKQUOTE>';
cls[2]=cls[1]
var exec=function(str){
//console.log(str[1]);
//str2=str.toLowerCase()
var l=str.toLowerCase().lastIndexOf("[/QUOTE]".toLowerCase())
var f=str.toLowerCase().indexOf("[QUOTE".toLowerCase())
console.log(l);
console.log(f);
if(l==-1){
return str
}else
{
var prev = str.slice(0,f)
var t_str=str.slice(f+"[QUOTE".length,l)
var lef =str.slice(l+"[/QUOTE]".length)
console.log(t_str);
if(t_str[0]=="="){
var fa=t_str.toLowerCase().indexOf("]".toLowerCase())
return prev+cls[0]+cls[3]+t_str.slice(1,fa)+cls[1]+exec(t_str.slice(1+fa))+cls[2]+lef
}
else if(t_str[0]=="]"){
//var la=t_str.toLowerCase().lastIndexOf("]".toLowerCase())
return prev+cls[0]+exec(t_str.slice(1))+cls[2]+lef
} else{
return t_str
}
}
}//end of quote
return exec(q)
}//end of
str=quote(str)
return str;
}
UBB代码的更多相关文章
- ThinkPHP HTML标签代码和UBB互相转换
1.UBB 转为 HTML TP的扩展里面自带一个ubb方法,用这个方法就能把用户输入的ubb格式代码转换为HTML标签的代码.这里用到的基本知识就是正则表达式啦,今天先不讲正则表达式. 来看一下TP ...
- [ITSEC]信息安全·Web安全培训第一期客户端安全之UBB系列
缩略图: 引文: 所谓UBB代码,是指论坛中的替代HTML代码的安全代码.ubb发帖编辑器 这种代码使用正则表达式来进行匹配,不同的论坛所使用的UBB代码很可能不同,不能一概而论.UBB代码的出现,使 ...
- [原创]-[WEB]代码高亮工具
代码高亮显示,不是什么新鲜玩艺了,各种各样的插件多了去了. 一开始想在baidu空间里贴代码,用GeSHi生成的高亮HTML复制到编辑器就可以了,不过QQ空间却不行,复制过去的格式全部被清 ...
- web安全性测试用例
建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1. 输入验证 客户端验证 服务器端验证(禁用脚本调试,禁用Cookies) 1.输入很大的数(如4,29 ...
- C# 字符串操作类
using System; using System.Collections.Generic; using System.Text; using System.Collections; using S ...
- php高级
php面试题之一--PHP核心技术(高级部分) 一.PHP核心技术 1.写出一个能创建多级目录的PHP函数(新浪网技术部) <?php /** * 创建多级目录 * @param $path s ...
- C# 格式化字符串,日期,字符串操作汇总
时间格式化 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:D ...
- c#.net常用字符串函数 字符串常用方法
RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1); //去掉最后一个逗号 Compare 比较字符串 ...
- (转)c#.net常用字符串函数
Compare 比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等 CompareOrdinal 与Compare一样,但不考虑文化背景 Format 格式化包含各种值的字符串和如何格式化每 ...
随机推荐
- 方格取数(多线程dp,深搜)
https://www.luogu.org/problem/P1004 题目描述 设有N×N的方格图(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某 ...
- 迅为iTop开发板使用buildroot构建opencv文件系统
这次我们来介绍使用buildroot构建opencv开发环境,buildroot 是 Linux平台上一个构建嵌入式Linux系统的框架.整个buildroot是由 Makefile脚本和Kconfi ...
- 计划任务crond
计划任务服务程序 计划任务分为以下两种情况:1.系统级别的定时任务:清理系统缓存临时文件清理系统信息采集日志文件切割 2.用户级别的定时任务:定时同步互联网时间定时备份系统配置文件定时备份数据库文件 ...
- yum源本地部署完后网络部署报错
错误信息 已加载插件:fastestmirror Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.al ...
- HTML常用数据类型
.数学函数: Math.ceil():天花板数 //大于当前小数的最小整数 Math.floor():地板数 //小于当前小数的最大整数 Math.round():四舍五入取整数 Math.rando ...
- JavaScript 的DOM操作及实例
一.Windows对象操作 (1).用代码打开窗口:window.open("第一部分","第二部分","第三部分","第四部分& ...
- ML modeling process
一.数据读取Load Data 二.数据分析EDA 三.数据预处理 四.特征工程Feature engineering 五.modeling & Tuning 六.Result 七.other ...
- [LC] 242. Valid Anagram
Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: ...
- Java IO: PipedOutputStream
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) PipedOutputStream可以往管道里写入读取字节流数据,代码如下: 01 Outp ...
- chap1-HttpRequest测试类
# HttpRequest测试类, 封装请求方法 import requests class HttpRequest: def http_request(self, url, method, data ...