日期:2014-05-18  浏览次数:20660 次

SQL里清除html标签 问题
ALTER function [dbo].[FN_ClearHtml] (@maco nvarchar(max))
returns nvarchar(max)
as
begin
  declare @randchar_one nvarchar(max)
  declare @randchar_two nvarchar(max)
  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,'&nbsp;','')
  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

这个函数能够清除html标签,但是有大于或者小于号,函数报错 请问下大家如何修改呢?

------解决方案--------------------
不太好办.
因为你没办法将标签的尖括号与大于或小于号区分开,网页上的内容太多变了,很难判断.
------解决方案--------------------
叶子博客里好像有个替换,去看看http://hi.csdn.net/maco_wang