Cita:
Iniciado por Adler
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]", " ")
'[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