2017年9月15日 星期五

T-SQL 去除 html tag

先前有練習過,使用 C# 把類似 HTML 編輯器所儲存的內容,去掉 HTML Tag,但如果不想用 C# 來寫,而是直接在 SQL Server 上用 T-SQL 就直接完成,是否有這機會呢?

有的,這已經有人寫好了。

我參考了 Pinal Dave 的文章,把它主要的關鍵語法擷取下來:

CREATE FUNCTION [dbo].[clearTag]
(
 -- Add the parameters for the function here
 @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


主要是在資料庫裡新增一個函數( function),把那些雜亂的內容當作參數傳進這個函數,回傳值則是我們想要的乾淨內容。

而使用方式,則是


select [dbo].[自訂函數名稱]('xxxx html tag')

參考資料:
01.Defined Function to Strip HTML – Parse HTML – No Regular Expression

02.去除 html tag(C# 版)

沒有留言:

張貼留言