konvertere HTML til tekst i SQL kan gjøres effektivt med en brukerdefinert funksjon . En brukerdefinert funksjon aksepterer parametere , utfører en handling, for eksempel analyse HTML , og returnerer resultatet som en verdi. Funksjonen kan utføres fra alle SQL-setning eller ekstern programmeringsspråk. Du trenger
Intermediate kjennskap til T - SQL
tilstrekkelig tilgang til å lage en funksjon database objekt
Vis flere instruksjoner
en
Koble til databasen , og . opprette en ny SQL -fil
2
Skriv inn følgende SQL : en
CREATE FUNCTION [ dbo ] [ CleanHTML ]
(
@ . DirtyText varchar ( MAX )
)
RETUR varchar ( MAX )
AS
START
erklærer @ BeginPos int
erklærer @ EndPos int
erklærer @ Len int
- Bytt HTML enhet og med '& ' karakter (dette må gjøres først, som
< p > - ' &' kan bli dobbelt kodet som ' &' )
SET @ BeginPos = CHARINDEX ( '& ' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde , '& ')
SET @ BeginPos = CHARINDEX ( '& ' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Bytt HTML enhet < med '< ' karakter
SET @ BeginPos = CHARINDEX (' < ', @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde : ' < ; ')
SET @ BeginPos = CHARINDEX (' < ', @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Bytt HTML enhet > med '> ' karakter
SET @ BeginPos = CHARINDEX (' >' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 OG @ EndPos > 0 og @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde : ' >' )
SET @ BeginPos = CHARINDEX ( '> ', @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Bytt HTML enhet og med '& ' karakter
SET @ BeginPos = CHARINDEX ( '& ' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
< p> SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde , '& ')
SET @ BeginPos = CHARINDEX ( '& ' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Bytt HTML enhet med ' ' karakter
SET @ BeginPos = CHARINDEX (' ', @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde : ' ')
SET @ BeginPos = CHARINDEX (' ' , @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Erstatt noen koder med et linjeskift
SET @ BeginPos = CHARINDEX ('' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ lengde , CHAR ( 13 ) + CHAR ( 10 ) )
SET @ BeginPos = CHARINDEX ('' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- erstatte noen
koder med en ny linje
SET @ BeginPos = CHARINDEX ('
' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde : ' CHAR ( 13 ) + CHAR ( 10 ) ')
SET @ BeginPos = CHARINDEX ('
' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- erstatte eventuelle
koder med en ny linje
SET @ BeginPos = CHARINDEX ('
', @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0 ) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde : ' CHAR ( 13 ) + CHAR ( 10 ) ')
SET @ BeginPos = CHARINDEX ('
' , @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Fjern alt mellom tags
SET @ BeginPos = CHARINDEX (' < ' , @ DirtyText )
SET @ EndPos = CHARINDEX (' >' , @ DirtyText , CHARINDEX ( '< ' , @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > ; 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengde , '')
SET @ BeginPos = CHARINDEX (' < ' , @ DirtyText )
SET @ EndPos = CHARINDEX (' >' , @ DirtyText , CHARINDEX (' < ' , @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
RETURN LTRIM ( RTRIM ( @ DirtyText ) )
END
3
Fyll ut SQL-funksjon .
4
Utfør funksjon, og kontroller at den returnerer de ønskede resultater . For eksempel : en
Velg fra dbo.CleanHTML ('
test < /BODY > < /HTML > ');