首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 虚拟主机评测对比
教你怎么在输出文本时替换掉所有HTML标记-ASP教程,ASP技巧
作者:网友供稿 点击:17
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

只写给新手的,各前辈就别来看我搬门弄斧了。hehe
经常看见有新手来问类似这样的话题,其实关于正则表达式我也不太懂。
昨天下午看了一下微软的正则表达式,少许理解。
今天也写个函数,只当实践,有误人之处请指点。
下面是一个实例:
原文是这样的:"<a href=""blueidea.com""><strong>test1</strong></a> <b>test2</b> <font color=red>test3</font> test4"

[ctrl+a 全部选择 提示:你可先修改部分代码,再按运行]


关键就在于<[^{><}]*>这个正则表达式,虽然很简单,但我还是我凭我浅浅理解,给大家说一下。
html标记是以小于号“<”开始,以大于号“>”,结束的。
所以这个正则表达式中的所有大于小于号都代表html标记,不是特殊字符。
“[”“]”方括号表达式中所包含的字符只匹配该括号表达式在正则表达式中
所处位置的一个单字符,我简单的理解为,它是匹配某位置的单个字符。
“^”标记是特殊符号,在方括号里面,后面跟的是列表字符,所以它的意思是
所有不在列表或范围中的字符。按我的理解他就相当于我们程序中的“not”
所以方括号中的^{><}的意思就是,这个单字符非大于或非小于号。
里面的大括号去掉其实也一样。大括号也是特殊字符
“*”也是特殊符号 匹配前面的子表达式零次或多次,
总的理解起来就是,在一个以小于号“”开始,并以大于号“”结束的标记,并且里面可以有多个的非大于或非小于号字符。这样也就匹配了html标记了。
呵呵,废话一堆

<%
function regexptest(patrn,strng,rewho)
dim re,match,matches
retstr=strng
set re = new regexp //建立正则表达式
re.pattern = patrn //建立正则表达式模式
re.ignorecase = true //是否不区分大小写,你可以关闭,因为html标记是不区分大小写的。
re.global = true //是否全局可用
set matches = re.execute(strng) //执行搜索
for each match in matches //遍历匹配集合
    retstr=replace(retstr,match.value,rewho) //找到区配字符,并开始替换
next
regexptest = retstr
end function
content="<a href= test.asp >test1</a>test2 <strong>test3</strong> test4" //这是原文
pattern="<[^{><}]*>" //正则表达式模式,这里也可以理解成将要被替换掉的字符
restr="" //将要替换成什么字符
response.write regexptest(pattern,content,restr)
%>

现在就还有一个问题。"<[^><]*>" 既然只匹配在一个以小于号“”开始,
并以大于号“”结束的标记,并且里面可以有多个的非大于或非小于号字符。
那么这样的<a href=<b>>就只被匹配一次了,因为<a ***>里还有html标记<b>所
以,不能匹配<a ***>,只能匹配<b>,那这样剩下的就是<a href=>
等于说并不会把所有的html都匹配掉。。。
我这里也有一个傻瓜的办法。就是执行regexptest函数两次


<%
function regexptest(patrn,strng,rewho)
dim re,match,matches
retstr=strng
set re = new regexp //建立正则表达式
re.pattern = patrn //建立正则表达式模式
re.ignorecase = true //是否不区分大小写可以关闭,因为html标记不区分大小写
re.global = true //是否全局可用
set matches = re.execute(strng) //执行搜索
for each match in matches //遍历匹配集合
    retstr=replace(retstr,match.value,rewho) //找到区配字符,并开始替换
next
regexptest = retstr
end function
content="<a href=<b>>test<>" //这是原文
pattern="<[^{><}]*>" //正则表达式模式,这里也可以理解成将要被替换掉的字符
restr="" //将要替换成什么字符
stest=regexptest(pattern,content,restr)
response.write regexptest(pattern,stest,restr)
%>


这样是可以,可是要是原文大一点的话一定会影响速度的,高手们是否有更好的办法呀。

另外这个函数还有另外一个用处。相信大家都知道google搜索出来的关键字都是加了
红色的了,同样,用这个函数也可以做到的。
比如说我想把"<a href=""blueidea.com""><strong>test1</strong></a> <b>test2</b> <font color=red>test3</font> test4中的es都变成红色,
那这个函数就这样调用。regexptest("es",原文,"<font color=red>es</font

>"
下面测试一下吧。

你现在应该懂得怎么做了吧。呵呵
具体请参见微软正则表达试


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Asp.Net下导出/导入规则的Excel(.xls)文件-ASP教程,ASP应用
·中国万网,万网
·中资源
·上海火速
·加拿大中文网
·华夏名网
·世纪东方
·商务中国
·中国E动网
·神话网络
最新文章
·photoshop抠图合成特效:飞出照片相框_photoshop教程
·将升级的windows vista驱动还原到原来的版本_windows vista
·photoshop漫画笔刷绘制非主流照片漫画_photoshop教程
·看域名注册信息判断网赚公司真假_网赚技巧
·找坐标:对网站进行坐标定位_站长心得
·如何增加网站pv_站长心得
·google性格一:对活跃度高的网页收录很快_google推广
·googleadsense容易被k的可能性列表_google推广
·价值数万的googlepr作弊方_google推广
·如何抢占人家的“首要意念”_google推广
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭