Убрать HTML-теги и атрибуты, кроме разрешенных в TSQL - PullRequest
1 голос
/ 16 декабря 2011

Существует ли какая-либо функция или процедура, которая позволяет удалять только недопустимые атрибуты и теги из HTML-текста в MSSQL?

Например, допустимыми элементами являются:

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

или что-то в этом роде

1 Ответ

2 голосов
/ 17 декабря 2011

Вы должны написать свою собственную функцию, чтобы сделать это. Но вы можете начать с приведенного ниже примера, взятого из этого популярного блоггера по SQL Server . Вам придется изменить его, чтобы он игнорировал теги в вашем «разрешенном» списке, поскольку, как и сейчас, он уничтожает все что угодно в тегах <<'>>.

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 # или любым другим языком, поддерживаемым вашей текущей платформой приложений, что, вероятно, было бы гораздо лучшим способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...