Pasar HTML a Texto Plano

19/12/2005 - 15:59 por enrique.emaldonado | Informe spam
Hola,

Tengo en una base de datos el contenido de varios artículos y noticias
en formato HTML (con tags de negrita, párrafo y elgunos enlaces A
HREF)

¿Hay alguna forma de importar esta información como texto plano sin
ningún tipo de Tags?

Lo mas cercano que veo es el HTMLEncode, pero esto sólo transforma los
caracteres en códigos de escape tipo "%20" para el espacio y demás.
Yo necesito que se eliminen estos tags y no se toque el resto, es
decir, como si interpretase el texto pasando de formatos.

¿Me podeis ayudar por favor?

Un saludo y gracias de un desesperado,
Enrique M.

Preguntas similare

Leer las respuestas

#1 Jose A. Fernandez
20/12/2005 - 00:24 | Informe spam
Enrique
desde donde quieres "limpiar" los tags?
- desde una funcion en vbscript, dentro de una pagina?
- desde un componente (por ejemplo en vb6) con mayor funcionalidad en
el lenguaje?
- desde javascript? (funcion del lado del cliente)

Espero que esto te puede servir de guia
http://groups.google.com.ar/groups?...+HTML+tags
Respuesta Responder a este mensaje
#2 Carlos Bladinieres
20/12/2005 - 01:00 | Informe spam
Enrique:

Prueba este codigo, te dejo de donde lo he obtenido.

Saludos,

Carlos
-

'Codigo obtenido de:
'http://www.codeproject.com/asp/removehtml.asp

'De esta manera se hace la llamada a la funcion para quitar el HTML
strPlainText = RemoveHTML(strTextWithHTML)

'Y esta es la función
Function RemoveHTML( strText )
Dim TAGLIST
'Todas las etiquetas que se encuentren en esta lista serán removidas de
la cadena de texto
'Es importante recordar que todas las etiquetas deben estar rodeqadas
de ; (punto y coma)
TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;"
&_
"BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;"
&_
"COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;"
&_
"FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;"
&_
"INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;"
&_
"MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;"
&_
"PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;"
&_
"TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;"

'Todas las etiquetas que se encuentren en esta lista serán removidas
desde la etiqueta de inicio hasta la de cierre
'por ejemplo una llamada a un objeto de flash que abre asi <OBJECT.
sera removida hasta donde termine el </OBJECT.
Const BLOCKTAGLIST ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"

Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock

nPos1 = InStr(strText, "<")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, ">")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")

nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If

If Left(strTagName, 1) = "/" Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If

If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0
Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";",
vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName,
vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, ">")
End If

If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If

If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = ""
End If

nPos1 = InStr(strText, "<")
Loop
strResult = strResult & strText

RemoveHTML = strResult
End Function

wrote in message
news:
Hola,

Tengo en una base de datos el contenido de varios artículos y noticias
en formato HTML (con tags de negrita, párrafo y elgunos enlaces A
HREF)

¿Hay alguna forma de importar esta información como texto plano sin
ningún tipo de Tags?

Lo mas cercano que veo es el HTMLEncode, pero esto sólo transforma los
caracteres en códigos de escape tipo "%20" para el espacio y demás.
Yo necesito que se eliminen estos tags y no se toque el resto, es
decir, como si interpretase el texto pasando de formatos.

¿Me podeis ayudar por favor?

Un saludo y gracias de un desesperado,
Enrique M.
Respuesta Responder a este mensaje
#3 Jose A. Fernandez
20/12/2005 - 01:06 | Informe spam
Me gusto mas esto

http://groups.google.com.ar/group/m...mp;q=clean

es algo asi
'function to strip HTML from entries
Function fnStripHTML(stringHTML)
If stringHTML <> "" Then
'Declare our variable
Dim rex
'Create an instance of the regexp object
Set rex = New regexp
'the almighty regexp pattern ;)
rex.Pattern = "<[^>]*>"
rex.Global = True
rex.IgnoreCase = True
'Now, Execute the regular expression search,
'stripping the HTML/Script tags out
fnStripHTML = rex.Replace(stringHTML, "")
'Clean up
Set rex = Nothing
End If
End Function


Espero que lo pruebes y nos comentes...
Respuesta Responder a este mensaje
#4 EnriqueM
20/12/2005 - 15:54 | Informe spam
He probado el último código de José A. fernández por ser el mas
simple que era lo que necesitaba y me va a las mil maravillas.

El problema es que tenía noticias y artículos con un montón de
formatos HTML metidos en un campo Memo de una base de datos y al
pasarlos a XML o querer pillar sólo los primeros X caracteres se
montaba una buena. :-)

Buscando en Internet sólo encontraba lo contrario, código para
convertir texto plano en HTML, que lo que hacía era básicamente meter
tags <BR> o <P></P> para las líneas y saltos de párrafo.

Muchísimas gracias. Me tenéis en el foro para lo que sea.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida