function html2bbcode(str) { if(forumallowhtml || (allowhtml && fetchCheckbox('htmlon')) || trim(str) == '') {
str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return smilies[$3]['code'];});
str = str.replace(/<img([^>]*aid=[^>]*)>/ig, function($1, $2) {return imgtag($2);});
return str;
} str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return codetag($2);}); str = preg_replace(['<style.*?>[\\\s\\\S]*?<\/style>', '<script.*?>[\\\s\\\S]*?<\/script>', '<noscript.*?>[\\\s\\\S]*?<\/noscript>', '<select.*?>[\s\S]*?<\/select>', '<object.*?>[\s\S]*?<\/object>', '<!--[\\\s\\\S]*?-->', ' on[a-zA-Z]{3,16}\\\s?=\\\s?"[\\\s\\\S]*?"'], '', str); str= str.replace(/(\r\n|\n|\r)/ig, ''); str= trim(str.replace(/&((#(32|127|160|173))|shy|nbsp);/ig, ' ')); if(!fetchCheckbox('parseurloff')) {
str = parseurl(str, 'bbcode', false);
} str = str.replace(/<br\s+?style=(["']?)clear: both;?(\1)[^\>]*>/ig, '');
str = str.replace(/<br[^\>]*>/ig, "\n"); if(!fetchCheckbox('bbcodeoff') && allowbbcode) {
str = preg_replace(['<table([^>]*(width|background|background-color|bgcolor)[^>]*)>', '<table[^>]*>', '<tr[^>]*(?:background|background-color|bgcolor)[:=]\\\s*(["\']?)([\(\)%,#\\\w]+)(\\1)[^>]*>', '<tr[^>]*>', '<t[dh]([^>]*(width|colspan|rowspan)[^>]*)>', '<t[dh][^>]*>', '<\/t[dh]>', '<\/tr>', '<\/table>'], [function($1, $2) {return tabletag($2);}, '[table]', function($1, $2, $3) {return '[tr=' + $3 + ']';}, '[tr]', function($1, $2) {return tdtag($2);}, '[td]', '[/td]', '[/tr]', '[/table]'], str); str = str.replace(/<h([0-9]+)[^>]*>(.*)<\/h\\1>/ig, "[size=$1]$2[/size]\n\n");
str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return smilies[$3]['code'];});
str = str.replace(/<img([^>]*src[^>]*)>/ig, function($1, $2) {return imgtag($2);});
str = str.replace(/<a\s+?name=(["']?)(.+?)(\1)[\s\S]*?>([\s\S]*?)<\/a>/ig, '$4'); str = recursion('b', str, 'simpletag', 'b');
str = recursion('strong', str, 'simpletag', 'b');
str = recursion('i', str, 'simpletag', 'i');
str = recursion('em', str, 'simpletag', 'i');
str = recursion('u', str, 'simpletag', 'u');
str = recursion('a', str, 'atag');
str = recursion('font', str, 'fonttag');
str = recursion('blockquote', str, 'simpletag', 'indent');
str = recursion('ol', str, 'listtag');
str = recursion('ul', str, 'listtag');
str = recursion('div', str, 'dpstag');
str = recursion('p', str, 'dpstag');
str = recursion('span', str, 'dpstag');
} str = str.replace(/<[\/\!]*?[^<>]*?>/ig, ''); for(var i = 0; i <= codecount; i++) {
str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", codehtml[i]);
} return preg_replace([' ', '<', '>', '&'], [' ', '<', '>', '&'], str);
}
str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return smilies[$3]['code'];});
str = str.replace(/<img([^>]*aid=[^>]*)>/ig, function($1, $2) {return imgtag($2);});
return str;
} str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return codetag($2);}); str = preg_replace(['<style.*?>[\\\s\\\S]*?<\/style>', '<script.*?>[\\\s\\\S]*?<\/script>', '<noscript.*?>[\\\s\\\S]*?<\/noscript>', '<select.*?>[\s\S]*?<\/select>', '<object.*?>[\s\S]*?<\/object>', '<!--[\\\s\\\S]*?-->', ' on[a-zA-Z]{3,16}\\\s?=\\\s?"[\\\s\\\S]*?"'], '', str); str= str.replace(/(\r\n|\n|\r)/ig, ''); str= trim(str.replace(/&((#(32|127|160|173))|shy|nbsp);/ig, ' ')); if(!fetchCheckbox('parseurloff')) {
str = parseurl(str, 'bbcode', false);
} str = str.replace(/<br\s+?style=(["']?)clear: both;?(\1)[^\>]*>/ig, '');
str = str.replace(/<br[^\>]*>/ig, "\n"); if(!fetchCheckbox('bbcodeoff') && allowbbcode) {
str = preg_replace(['<table([^>]*(width|background|background-color|bgcolor)[^>]*)>', '<table[^>]*>', '<tr[^>]*(?:background|background-color|bgcolor)[:=]\\\s*(["\']?)([\(\)%,#\\\w]+)(\\1)[^>]*>', '<tr[^>]*>', '<t[dh]([^>]*(width|colspan|rowspan)[^>]*)>', '<t[dh][^>]*>', '<\/t[dh]>', '<\/tr>', '<\/table>'], [function($1, $2) {return tabletag($2);}, '[table]', function($1, $2, $3) {return '[tr=' + $3 + ']';}, '[tr]', function($1, $2) {return tdtag($2);}, '[td]', '[/td]', '[/tr]', '[/table]'], str); str = str.replace(/<h([0-9]+)[^>]*>(.*)<\/h\\1>/ig, "[size=$1]$2[/size]\n\n");
str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return smilies[$3]['code'];});
str = str.replace(/<img([^>]*src[^>]*)>/ig, function($1, $2) {return imgtag($2);});
str = str.replace(/<a\s+?name=(["']?)(.+?)(\1)[\s\S]*?>([\s\S]*?)<\/a>/ig, '$4'); str = recursion('b', str, 'simpletag', 'b');
str = recursion('strong', str, 'simpletag', 'b');
str = recursion('i', str, 'simpletag', 'i');
str = recursion('em', str, 'simpletag', 'i');
str = recursion('u', str, 'simpletag', 'u');
str = recursion('a', str, 'atag');
str = recursion('font', str, 'fonttag');
str = recursion('blockquote', str, 'simpletag', 'indent');
str = recursion('ol', str, 'listtag');
str = recursion('ul', str, 'listtag');
str = recursion('div', str, 'dpstag');
str = recursion('p', str, 'dpstag');
str = recursion('span', str, 'dpstag');
} str = str.replace(/<[\/\!]*?[^<>]*?>/ig, ''); for(var i = 0; i <= codecount; i++) {
str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", codehtml[i]);
} return preg_replace([' ', '<', '>', '&'], [' ', '<', '>', '&'], str);
}
解决方案 »
- javascript中top.parent和window.top的区别
- 咋啥也输不出来了?
- 求肋播放器插件的问题
- ==== [急]我在主页上加了一个window.open但发布后弹出窗体被IE阻止.如何解决? ====
- 知道这里大牛多,提个比较偏门的问题 :-) 关于html表单提交方面的。
- javaScript中confirm属性如何去掉左边的问号,如何修改标题?
- 换换脑筋,大家来看看这个网站www.by100.net 讨论一下,来着有分
- 求javascript教程
- 如何将html文本编辑器中的值写入到剪帖版,然后再从剪贴版中取出其值拷到textarea框中?
- 急急急!IE窗口如何由全屏恢复为最大化状态?
- iframe用js刷新的困惑
- 求助!
1、以上代码后面有个函数,里面有三个参加,但好像函数体里面只用到了一个参数,那$1、$2有什么用了,为什么还写在上面呢。
2、还是上面的代码,['code']这个表示什么?有什么作用?
3、smilies[$3]['code'] 这个代码是什么意思?有什么作用?str = recursion('b', str, 'simpletag', 'b');
1、这句话代表什么意思?
因为我不懂JS,我现在要把以上代码转写成别的代码,所以先理解,再写代码。呵。
$1是对整个字符中的引用(这好像和其它正则表达式不一样啊),那么$3就是第二个括号内的值--也就是一个数字id值,,.............
事实上你也可以写成($0,$1,$2) 或者 ($6,$7,$8)... 反正第一个$就表示匹配的整个表达式,第二$表示第一个括号,所以函数那里写了三个值,却只用了最后一个,