是否有任何函数或过程允许从MSSQL中的html文本中仅删除不允许的属性和标记?
例如允许的元素是:
a[href|target=_blank],strong,b,div[align],br,p[align|class]
或类似的东西
答案 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#或当前应用平台支持的任何其他语言方面做得更好,这可能是一个更好的方法。