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

【叶子函数分享一】去除字符串中的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='





百度一下id=sb>
帮助
高级

'

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('

aaaa

<<本草纲目>>')

--运行结果:

/*

aaaa<<本草纲目>>

*/

你可能感兴趣的:(去除字符串中的html标记及标记中的内容)