Foros del Web » Programando para Internet » ASP Clásico »

Eliminar BBCode, expresiones regulares

Estas en el tema de Eliminar BBCode, expresiones regulares en el foro de ASP Clásico en Foros del Web. Bueno tengo un problema con expresiones regulares, para eliminar el BBCODE. Realmente lo que necesito es eliminar todo lo que haya entre [] Por ejemplo, ...
  #1 (permalink)  
Antiguo 22/05/2008, 02:47
 
Fecha de Ingreso: julio-2006
Ubicación: Valencia
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Eliminar BBCode, expresiones regulares

Bueno tengo un problema con expresiones regulares, para eliminar el BBCODE.

Realmente lo que necesito es eliminar todo lo que haya entre []

Por ejemplo, esta expresion elimina todo tag HTML entre <>:
Código:
RegEx.Pattern = "<[^>]*>"
¿Cual seria la expresion regular para eliminar todo contenido entre []?
  #2 (permalink)  
Antiguo 22/05/2008, 03:17
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Respuesta: Eliminar BBCode, expresiones regulares

Pues creo que sería algo como esto:

Código:
exprReg.Pattern = "\[[^\]]*\]"
txtAux = exprReg.replace(txtAux, "")
Donde \[ indica el caracter [ exacto y ^\[ indica cualquier cosa menos el caractrer ], se usa \ para diferenciarlo de la notación de expresiones regulares, donde los conjuntos se encierran entre []

Si quieres una función completa para pasar de BBCodes a HTML dímelo, te la copio aquí...
  #3 (permalink)  
Antiguo 22/05/2008, 03:37
 
Fecha de Ingreso: julio-2006
Ubicación: Valencia
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Eliminar BBCode, expresiones regulares

Perfect.

Eso es lo que necesitaba.

El codigo que comentas si me gustaria que me lo copiases aqui, por que creo que me va a tocar utilizarlo y asi comprender un poco mas el tema de las expresiones regulares, por que he visto expresiones, que creo que me constaria menos aprender chino que eso.
  #4 (permalink)  
Antiguo 22/05/2008, 05:20
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: Eliminar BBCode, expresiones regulares

Cita:
Iniciado por FACCE Ver Mensaje
RegEx.Pattern = "<[^>]*>"

Cita:
Iniciado por PosProdukcion Ver Mensaje
exprReg.Pattern = "\[[^\]]*\]"
txtAux = exprReg.replace(txtAux, "")
En realidad no creéis que la expresión debería quedar

Código PHP:
RegEx.Pattern "<[^>]+>"
exprReg.Pattern "\[[^\]]+\]" 
Ya que el "*" (asterisco) dice que ha de coincidir con 0 o más veces, cuando tenía que ser con 1 o más veces, de ahí que hay que usar el "+"

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 22/05/2008, 07:27
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Respuesta: Eliminar BBCode, expresiones regulares

Cita:
Iniciado por Adler Ver Mensaje
En realidad no creéis que la expresión debería quedar

Código PHP:
RegEx.Pattern "<[^>]+>"
exprReg.Pattern "\[[^\]]+\]" 
Ya que el "*" (asterisco) dice que ha de coincidir con 0 o más veces, cuando tenía que ser con 1 o más veces, de ahí que hay que usar el "+"

Suerte
Yo pienso que el * está OK si también quieres que acepte la cadena [], es decir, abrir y cerrar corchetes SIN NADA dentro, si siempre tiene que tener algo dentro, entonces está ok el +

Ahí va la función, usa las variables globales textoHTML y textoBB, también usa las funciones quitaCaracteresHTML que cambia los signos <, >, & por los html entities y quitaTildes que cambia las vocales acentuadas, eñes, etc por html entities.

El código BB pues no se si hay una estándar, pero este es así como me salió, y por lo que se ve en parte coincide con el intérprete de FDW, así que he tenido que separar con espacios los códigos BB en los comentarios de la función, espero que se entienda...

:

Código:
    '===========================================================================
    'parseHTML
    'Traduce el texto en codigos BB a HTML
'===========================================================================
    Sub parseHTML
    'Convierte el textoBB en textoHTML
        Dim txtAux
        Dim exprReg

        Set exprReg = New RegExp
        With exprReg
            .IgnoreCase = True
            .Global = True
        End With

            'txtAux = Server.HTMLEncode(textoBB) <- Esto da problemas con ISO-8859-1 asi q lo cambio por quitaCaracteresHTML(quitaTildes(textoBB))
             txtAux = quitaCaracteresHTML(quitaTildes(textoBB)) 'Sustituye los <, >, "" y &
             txtAux = replace(txtAux, chr(10), "<br />")

            txtAux = replace(txtAux, "[TAB]", "&nbsp;&nbsp;&nbsp;&nbsp;")

            '[N]negrita[/N]
            exprReg.Pattern = "\[N\]"
            txtAux = exprReg.replace(txtAux, "<b>")
            exprReg.Pattern = "\[/N\]"
            txtAux = exprReg.replace(txtAux, "</b>")

            '[K]Cursiva[/K]
            exprReg.Pattern = "\[K\]"
            txtAux = exprReg.replace(txtAux, "<i>")
            exprReg.Pattern = "\[/K\]"
            txtAux = exprReg.replace(txtAux, "</i>")

            '[ S]Subrayado[/ S]
            exprReg.Pattern = "\[S\]"
            txtAux = exprReg.replace(txtAux, "<u>")
            exprReg.Pattern = "\[/S\]"
            txtAux = exprReg.replace(txtAux, "</u>")

            '[ LE FT]izquierda[/ LE FT]
            'Para left solo quita las etiquetas, ya que es la alineacion por defecto
            exprReg.Pattern = "\[LEFT\]"
            txtAux = exprReg.replace(txtAux, "<p align=""left"">")
            exprReg.Pattern = "\[/LEFT\]"
            txtAux = exprReg.replace(txtAux, "</p>")

            '[ CEN TER]centrado[/ CEN TER]
            exprReg.Pattern = "\[CENTER\]"
            'txtAux = exprReg.replace(txtAux, "<center>")
            txtAux = exprReg.replace(txtAux, "<p align=""center"">")
            exprReg.Pattern = "\[/CENTER\]"
            'txtAux = exprReg.replace(txtAux, "</center>")
            txtAux = exprReg.replace(txtAux, "</p>")

            '[ RI GHT]derecha[/ RI GHT]
            exprReg.Pattern = "\[RIGHT\]"
            txtAux = exprReg.replace(txtAux, "<p align=""right"">")
            exprReg.Pattern = "\[/RIGHT\]"
            txtAux = exprReg.replace(txtAux, "</p>")

            '[J U S T IFY]justificado[/J US TIFY]
            exprReg.Pattern = "\[JUSTIFY\]"
            txtAux = exprReg.replace(txtAux, "<p style= ""text-align: justify"">")
            exprReg.Pattern = "\[/JUSTIFY\]"
            txtAux = exprReg.replace(txtAux, "</p>")

            '[u r l='http://www.direccion.com/']Nombre_Enlace[/url]'
            exprReg.Pattern = "\[URL=\'([^\']*)\'\]"
            txtAux = exprReg.replace(txtAux, "<a href=""$1"" target=""_blank"">")
            exprReg.Pattern = "\[/URL\]"
            txtAux = exprReg.replace(txtAux, "</a>")

            '[SI ZE='5']texto tamaño[/SI ZE]'
            exprReg.Pattern = "\[SIZE=\'([\d]+)\'\]"
            txtAux = exprReg.replace(txtAux, "<font size=""$1"">")
            exprReg.Pattern = "\[/SIZE\]"
            txtAux = exprReg.replace(txtAux, "</font>")

            '[MARCA='color']texto en color[/MARCA]'
            exprReg.Pattern = "\[MARCA=\'([^\']+)\'\]"
            txtAux = exprReg.replace(txtAux, "<span style=""background-color: $1"">")
            exprReg.Pattern = "\[/MARCA\]"
            txtAux = exprReg.replace(txtAux, "</span>")

            '[CO LOR='color']texto en color[/COL OR]'
            exprReg.Pattern = "\[COLOR=\'([^\']+)\'\]"
            txtAux = exprReg.replace(txtAux, "<font color=""$1"">")
            exprReg.Pattern = "\[/COLOR\]"
            txtAux = exprReg.replace(txtAux, "</font>")

            '[EST ILO='clase']texto span[/EST ILO]'
            exprReg.Pattern = "\[ESTILO=\'([^\']+)\'\]"
            txtAux = exprReg.replace(txtAux, "<span class=""$1"">")
            exprReg.Pattern = "\[/ESTILO\]"
            txtAux = exprReg.replace(txtAux, "</span>")

            'Una vez procesados todos los tags se ponen las comillas simples (apostrofes)
            'ya que ahora no interfierten con el procesado de formato
            txtAux = replace(txtAux, "´", "'")
        
        textoHTML = txtAux

        Set exprReg = nothing
    End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:42.