剥离除SQL中允许的HTML标记和属性

时间:2011-12-16 04:29:18

标签: html sql tsql

是否有任何函数或过程允许从MSSQL中的html文本中仅删除不允许的属性和标记?

例如允许的元素是:

a[href|target=_blank],strong,b,div[align],br,p[align|class]

或类似的东西

1 个答案:

答案 0 :(得分:2)

你必须编写自己的功能才能做到这一点。但您可能希望从以下popular SQL Server blogger中的示例开始。您必须修改它以忽略“允许”列表中的标记,因为它现在正在“<”中取消任何内容'>'标签

CREATE FUNCTION [dbo].[udf_StripHTML](@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN

DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT

SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1

WHILE @Start > 0 AND @End > 0 AND @Length > 0    
BEGIN
   SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
   SET @Start = CHARINDEX('<',@HTMLText)
   SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
   SET @Length = (@End - @Start) + 1
END

RETURN LTRIM(RTRIM(@HTMLText))

END
GO

然而,毋庸置疑,您允许的标签种类越多,tsql就越复杂。我的猜测是,有第三方工具可以在java,c#或当前应用平台支持的任何其他语言方面做得更好,这可能是一个更好的方法。