Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/05/2008, 07:27
Avatar de PosProdukcion
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