逐浪云主机

立即开通

sql 去除html标签函数(SQL查询结果过滤HTML字符)方法另一侧

作者:本站编辑 发布时间:2018-04-01 来源:佚名 点击数:

这个方法基于变量查询,方法如下:

--1、创建函数 

create function [dbo].[clearhtml] (@maco varchar(8000)) 

returns varchar(8000) as begin 

    declare @i int 

    while 1 = 1  

    begin 

       set @i=len(@maco) 

       set @maco=replace(@maco, substring(@maco,charindex('<',@maco), 

       charindex('>',@maco)-charindex('<',@maco)+1),space(0)) 

       if @i=len( @maco )  

       break  

    end 

  

    set @maco=replace(@maco,' ','') 

    set @maco=replace(@maco,' ','') 

    set @maco=ltrim(rtrim(@maco)) 

    set @maco=replace(@maco,char(9),'') 

    set @maco=replace(@maco,char(10),'') 

    set @maco=replace(@maco,char(13),'') 

  

    return (@maco) 

end 

  

--2、测试示例 

declare @mark varchar(8000) 

set @mark='<body><div id=u><a href=http://passport.baidu.com/?login&tpl=mn>登录</a></div><center><img src=/upload/2011/3/2210597443.gif width=270 height=129 usemap="#mp" id=lg><br><br><br><br><table cellpadding=0 cellspacing=0 id=l><tr><td><div id=m><a onclick=s(this) href=http://news.baidu.com>新 闻</a><b>网 页</b><a onclick=s(this) href=http://tieba.baidu.com>贴 吧</a><a onclick=s(this) href=http://zhidao.baidu.com>知 道</a><a onclick=s(this) href=http://mp3.baidu.com>MP3</a><a onclick=s(this) href=http://image.baidu.com>图 片</a><a onclick=s(this) href=http://video.baidu.com>视 频</a></div></td></tr></table> 

<table cellpadding=0 cellspacing=0 style="margin-left:15px"><tr valign=top><td style="height:62px;padding-left:92px" nowrap><div style="position:relative"><form name=f action=/s><input type=text name=wd id=kw size=42 maxlength=100> <input type=submit value=百度一下id=sb><div id=sug onselectstart="return false"></div><span id=hp><a href=/search/jiqiao.html>帮助</a><br><a href=/gaoji/advanced.html>高级</a></span></form></div></td></tr></table> 

</body>' 

select dbo.clearhtml (@mark) 

  

--3、运行结果 

/* 

new 

--------------------------------------- 

登录新闻网页贴吧知道MP3图片视频帮助高级 

*/ 

/* 

但是上面的函数还存在问题,如果内容中有“《》”或是“<<>>”这样的标记,则不能达到我们的要求。 

*/ 

  

--加强版 

create function [dbo].[clearhtml_V2] (@maco varchar(8000)) 

returns varchar(8000)  

as  

begin 

    declare @randchar_one nvarchar(200) 

    declare @randchar_two nvarchar(200) 

       if(charindex('<<',@maco)>0) 

              begin 

                     set @randchar_one='D4678B36-B958-4274-B81E-BBA636CFB427'; 

                     set @randchar_two='49E374CC-9E1A-4850-897C-27074DE32E7F'; 

                     set @maco=replace(@maco,'<<',@randchar_one) 

                     set @maco=replace(@maco,'>>',@randchar_two) 

              end 

    declare @i int 

    while 1 = 1  

    begin 

       set @i=len(@maco) 

       set @maco=replace(@maco, substring(@maco,charindex('<',@maco), 

       charindex('>',@maco)-charindex('<',@maco)+1),space(0)) 

       if @i=len( @maco )  

       break  

    end 

  

    set @maco=replace(@maco,' ','') 

    set @maco=replace(@maco,' ','') 

    set @maco=ltrim(rtrim(@maco)) 

    set @maco=replace(@maco,char(9),'') 

    set @maco=replace(@maco,char(10),'') 

    set @maco=replace(@maco,char(13),'') 

    if(charindex(@randchar_one,@maco)>0) 

    begin 

       set @maco=replace(@maco,'D4678B36-B958-4274-B81E-BBA636CFB427','<<') 

       set @maco=replace(@maco,'49E374CC-9E1A-4850-897C-27074DE32E7F','>>') 

    end 

    return (@maco) 

end 

  

select dbo.clearhtml_V2('<p>test</p><<西游记>><a href="www.baidu.com" />') 

--运行结果: 

/* 

test<<西游记>>


本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友