您的位置:首页 > Web前端 > HTML

去除字符串中的html标记及标记中的内容

2014-11-13 18:28 417 查看
【叶子函数分享一】去除字符串中的html标记及标记中的内容

--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=http://www.baidu.com/img/baidu_logo.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>aaaa</p><<本草纲目>><a href="www.baidu.com"
/>')
--运行结果:
/*
aaaa<<本草纲目>>
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: