去除字符串中的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='<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 οnclick=s(this) href=http://news.baidu.com>新 聞</a><b>網 頁</b><a οnclick=s(this) href=http://tieba.baidu.com>貼 吧</a><a οnclick=s(this) href=http://zhidao.baidu.com>知 道</a><a οnclick=s(this) href=http://mp3.baidu.com>MP3</a><a οnclick=s(this) href=http://image.baidu.com>圖 片</a><a οnclick=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<<本草綱目>>
*/
總結
以上是生活随笔為你收集整理的去除字符串中的html标记及标记中的内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: progress与meter的区别
- 下一篇: 处理微信文章中防盗链问题