UBB转HTML和HTML转UBB脚本

function htmlToubb(h,u){  
str = pattern(document.getElementById(h).value);
document.getElementById(u).value=str;
}

function ubbTohtml(u,h){
str = up(document.getElementById(u).value);
document.getElementById(h).value=str;
}

function pattern(str){
str = str.replace(/<br[^>]*>/ig,'\n');
str = str.replace(/<p[^>\/]*\/>/ig,'\n');
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(/<[^>]*?>/ig, '
');
str = str.replace(/&amp;/ig, '
&');
str = str.replace(/&lt;/ig, '
<');
str = str.replace(/&gt;/ig, '
>');
return str;
}

function up(str){
str = str.replace(/</ig,'
&lt;');
str = str.replace(/>/ig,'
&gt;');
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>');
return str;
}

在实际应用中 如超链接的转换 UBB 转 <A>
re=/\[url=([^\]]+)\]([^\[]*)\[\/url\]/ig;
str = str.replace(re,function($0,$1,$2){
if($2){
return '<a href='+$1+' target=_blank>'+$2+'</a>';
}
else{
//没有输入链接描述时 链接地址即为描述
return '<a href='+$1+' target=_blank>'+$1+'</a>';
}
});

<A>转UBB

re =/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig;
str = str.replace(re,function ($0,$1,$2){
if($1==$2){
return '
[url='+$1+'][/url]';
}
else{
return '
[url='+$1+']'+$2+'[/url]';
}
});

posted @ 2011-10-13 09:53  shine_panda  阅读(959)  评论(0编辑  收藏  举报