找回密码
 注册
搜索
免费空间 免费域名 免费AI 老牌主机商首月仅1美分!27美元/年!Spaceship优惠码 Namecheap优惠码阿里云2核2G3M新老续费同享99元/年!
查看: 1745|回复: 2

[广而告之] ubb

[复制链接]
发表于 2010-11-14 15:24:07 | 显示全部楼层 |阅读模式
松云博客 » JavaScript解析UBB生成HTML  .recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}松云博客 » JavaScript解析UBB生成HTML
var siteUrl='http://wordpress.facesoho.com/',strBatchView='685', strBatchInculde='', strBatchCount='';
var nameEmpty="错误:用户名为空。",emailError="错误:电子邮件不正确。",waitting="请稍等...";
var msgLength="您的留言可能为空,或者字数超过1000";
    首页 About  松云博客承君此诺 必守一生首页 互联网络 软件应用 网络编程 生活感悟 心情日记 游戏世界 服务器 网站运营 教育教学 公益广告 « jQuery 常用插件经典PHP网店 » 2010-02-22 16:02:42  JavaScript解析UBB生成HTML

JavaScript解析UBB生成HTML
UBB标签作为HTML标签的安全替代,在网络上应用已经十分广泛
服务器端解析的问题是比较耗服务器的CPU(字符串匹配,正则匹配),放在客户端解析要好的多,还可以提高网页的访问速度,
下面的代码解析,,,[img],[color],[wma],[flash]这几个常见的UBB标签function text2html(s)
{
if(s.indexOf(“://”) > 0)
{
s = s.replace(/(^|[^\"\'\]])(http|ftp|mms|rstp|news|https)\:\/\/([^\s\033\[\]\”\’]+)/gi, “$1[url]$2://$3
“);
s = s.replace(/\[url\](http\:\/\/\S+\.)(gif|jpg|jpeg|png)\[\/url\]/gi, ““);
}
if(s.match(/\[(\w+)([^\[\]\s]*)\].*\[\/\1\]/))
{
s = s.replace(/\[url\](.+?)\[\/url\]/gi,”$1″);
s = s.replace(/\[img\](.+?\.(?:gif|jpg|jpeg|png))\[\/img\]/gi, &#8220;< img src=&#8221;$1&#8243; alt=&#8221;$1&#8243; />&#8221;);
s = s.replace(/\[flash\](.+?\.swf)\[\/flash\]/gi, &#8220;


FLASH: $1&#8243;);
s = s.replace(/\[wma\](.+?\.(?:wma|mp3))\[\/wma\]/gi, &#8220;
s = s.replace(/\[color=([#0-9a-zA-Z]{1,10})\](.+?)\[\/color\]/gi, &#8220;$2&#8220;);
s = s.replace(/\[b\](.+?)\[\/b\]/gi, &#8220;$1&#8220;);
s = s.replace(/\[i\](.+?)\[\/i\]/gi, &#8220;$1&#8220;);
}
return s;
}关于JavaScript replace() 方法replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
stringObject.replace(regexp,replacement)
.regexp 必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
.replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数
.返回值,一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的说明,字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement 可以是字符串,也可以是函数。如果它是字符串,那么没有匹配都将由字符串替换
但是 replacement 中的 $ 字符具有特定的含义。如下所示,它说明从模式匹配得到的字符串将用于替换。$1、$2、&#8230;、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$&#8217; 位于匹配子串右侧的文本。
$$ 直接量符号。注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数/字符串。replacement 是函数的情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身例1
< script type=&#8221;text/javascript&#8221;>
var str=&#8221;Welcome to Microsoft! We are proud to announce that Microsoft has &#8221;
str=str + &#8220;one of the largest Web Developers sites in the world.&#8221;
document.write(str.replace(/Microsoft/, &#8220;ichina&#8221;));
document.write(str.replace(/Microsoft/g, &#8220;ichina&#8221;));
< /script>
上面二个输出表达式有一个区别[/g表式全局替换,/i表示不分大小写],有二种不同的输出,第一种输出中只替换的第一个Microsoft,第二种替换了所有的Microsoft,
例2
将把字符串中所有单词的首字母都转换为大写:name = &#8216;we love china,we have much money&#8217;;
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);


转载来自:松云博客
固定链接:http://wordpress.facesoho.com/program/javascript-ubb-html.html发布: Facebook | 分类目录:网络编程 | 评论: 评论暂缺 | 浏览:  var needemail="1",nowurl="685", md5 = "c279f8a89f0b0b1bbba1dd6229d15d31";
发表评论: 欢迎参与讨论,发表您的看法、交流您的观点名称(*)网站电子邮件 正文(*)(最多 1000 字)记住我,下次回复时不用重新输入个人信息 站内搜索输入您的搜索字词&nbsp;WebFaceSOHO.com提交搜索表单热文排行最新评论及回复最近发表 WordpressThis site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.hs.graphicsDir = "http://wordpress.facesoho.com/function/auto-highslide/";
hs.outlineType = "rounded-white";        hs.outlineWhileAnimating = true;        hs.showCredits = false;
发表于 2010-11-14 15:55:43 | 显示全部楼层
看不懂……
头像被屏蔽
发表于 2010-11-14 20:41:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|免费吧论坛

GMT+8, 2024-12-25 12:39 , Processed in 0.025507 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表