Pues eso, compañeros, ¿cómo obtener el texto plano de un
RichText —HTML—, similar a
WebPage.ToString, pero sin cargar este componente? Quiero decir, que si hay alguna función de cadena que mi natural torpeza me haya impedido ver.
De momento, me apaño así —las
ReGex las he ido encontrando por ahí y adaptándolas al algo corto PCRE de gambas3—:
Código:
Public Function HTMLaTexto(sTexto As String) As String
' **** Obtener texto plano de un RichText (HTML).
' <<<< sPaso : Devuelve una cadena con texto plano.
' >>>> sTexto: Texto formato HTML.
'' ╔═════════════════════════════════════════════════════════════╗
'' ║ Atención: PCRE sólo admite texto ASCII extendido, no UTF-8. ║
'' ║ Los valores obtenidos pueden no ser correctos. ║
'' ╚═════════════════════════════════════════════════════════════╝
Dim sPaso As String
' Eliminar CSS y JS
sPaso = RegExp.Replace(sTexto, "<(script|style)[^>]*>(.*?)<.(script|style)>", "", RegExp.Caseless + RegExp.DotAll)
' Eliminar comentarios
sPaso = RegExp.Replace(sPaso, "<!--.*?-->", "", RegExp.DotAll)
' Eliminar etiquetas
sPaso = RegExp.Replace(sPaso, "<(.|\n)*?>", "", RegExp.Greedy)
' Eliminar caracteres de edición antes y después
sPaso = Trim(sPaso)
Return sPaso
End
Gracias de antemano.