2011-12-16 48 views
1

是否有任何函數或過程允許從MSSQL中的HTML文本中只去除不允許的屬性和標籤?去除TSQL中允許的HTML標籤和屬性

例如允許的元素是:

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

或類似的東西

回答

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#或其他目前應用平臺支持的語言中做得更好,這可能是更好的方法。