Conversion HTML au texte dans SQL peut être fait efficacement avec une fonction définie par l`utilisateur. Une fonction définie par l`utilisateur accepte les paramètres, effectue une action, telle que l`analyse HTML, et renvoie le résultat comme une valeur. La fonction peut être exécutée de toute instruction SQL ou langage de programmation externe.
Choses que vous devez
- Connaissance intermédiaire de T-SQL
- permissions adéquates pour créer un objet de base de données de fonction
Connectez-vous à votre base de données, et de créer un nouveau fichier SQL.
Entrez l`instruction SQL suivante:
CREATE FUNCTION [dbo]. [CleanHTML]
(
@DirtyText Varchar (MAX)
)
RETOURS varchar (MAX)
COMME
COMMENCER
DECLARE @BeginPos int
DECLARE @EndPos int
DECLARE @Len int
-- Remplacer l`entité HTML & avec le `&«Caractère (ce qui doit être fait en premier lieu, comme
-- `&»Pourrait être à double codé comme `&`)
@BeginPos SET = CHARINDEX ( `&»@DirtyText)
@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `&`)
@BeginPos SET = CHARINDEX ( `&»@DirtyText)
@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer l`entité HTML lt; avec le `lt;` personnage
SET @BeginPos = CHARINDEX ( `lt;`, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `lt;`)
SET @BeginPos = CHARINDEX ( `lt;`, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer l`entité HTML gt; avec le `gt;` personnage
SET @BeginPos = CHARINDEX ( `gt;`, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `gt;`)
SET @BeginPos = CHARINDEX ( `gt;`, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer l`entité HTML & avec le `&` personnage
@BeginPos SET = CHARINDEX ( `&»@DirtyText)
@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `&`)
@BeginPos SET = CHARINDEX ( `&»@DirtyText)
@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer l`entité HTML avec le caractère ``
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
@EndPos SET = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, ``)
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
@EndPos SET = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer toutes les balises avec un saut de ligne
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, CHAR (13) + CHAR (10))
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
@EndPos SET = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer tout
tags avec un saut de ligne@BeginPos SET = CHARINDEX ( `
»@DirtyText)@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, CHAR (13) + CHAR (10) `)
@BeginPos SET = CHARINDEX ( `
»@DirtyText)@EndPos SET = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Remplacer tout
tags avec un saut de ligne@BeginPos SET = CHARINDEX ( `
»@DirtyText)@EndPos SET = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, CHAR (13) + CHAR (10) `)
@BeginPos SET = CHARINDEX ( `
»@DirtyText)@EndPos SET = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
-- Retirez tout entre
Mots clés SET @BeginPos = CHARINDEX ( `lt;`, @DirtyText)
SET @EndPos = CHARINDEX ( `gt;`, @DirtyText, CHARINDEX ( `lt;`, @DirtyText))
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 ET @EndPos gt; 0 ET @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, ``)
SET @BeginPos = CHARINDEX ( `lt;`, @DirtyText)
SET @EndPos = CHARINDEX ( `gt;`, @DirtyText, CHARINDEX ( `lt;`, @DirtyText))
SET @ Len = (@EndPos - @BeginPos) + 1
FIN
RETURN LTRIM (RTRIM (@DirtyText))
FIN
Compiler la fonction SQL.
Exécutez la fonction, et vérifiez qu`il renvoie les résultats souhaités. Par exemple:
Choisissez parmi dbo.CleanHTML ( `
tester`);