Foros del Web » Programando para Internet » PHP »

Formateo con BBCode

Estas en el tema de Formateo con BBCode en el foro de PHP en Foros del Web. Hola, les comento cual es mi problema, resulta ke quiero extraer de mi base de datos textos codificados con BBCode. Quiero pasarlo a html de ...
  #1 (permalink)  
Antiguo 14/04/2005, 12:56
Avatar de mixba  
Fecha de Ingreso: noviembre-2003
Ubicación: CPU (Interior)
Mensajes: 116
Antigüedad: 20 años, 5 meses
Puntos: 0
Formateo con BBCode

Hola, les comento cual es mi problema, resulta ke quiero extraer de mi base de datos textos codificados con BBCode. Quiero pasarlo a html de manera que me lo muestre en la página, esto ya no es demasiado problema ya que he podido pasar a html la negrita, hacer saltos de línea con <br>, mostrar una foto, etc, el problema lo tengo con las direcciones URL del tipo [ URL=http://www.dominio.com]Dominio[/URL ], como seria el codigo para separar "[ URL=" de su direccion URL y el "]" ???.

He intentado haciendo una función prase y str_replace, pero no se, no anda, fijense a ver si saben que puede estar fallando:


Código PHP:
 <?php 

function parseBBCode ($text) {

    
$BBCodes = array();

 
// [email][email protected][/email] codigo..
    
$BBCodes[] = array("#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si""<a href=\"\\1\">\\1</a>");
 
// [url=www.domain.com]domain[/url] codigo.. (xxxx:// sin prefijo).
    
$BBCodes[] = array("#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si""<a href=\"http://\\1\">\\5</a>");
 
// [url=xxxx://www.domain.com]domain[/url] codigo..
    
$BBCodes[] = array("#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si""<a href=\"\\1\\2\">\\6</a>");
 
// [url]www.domain.com[/url] codigo.. (xxxx:// sin prefijo).
    
$BBCodes[] = array("#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si""<a href=\"http://\\1\">\\1</a>");
 
// [url]xxxx://www.domain.com[/url] codigo..
    
$BBCodes[] = array("#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is""<a href=\"http:\1\2\">\1\2</a>");
    foreach (
$BBCodes as $BBCode) {
     
$text str_replace($BBCode[0],$BBCode[1],$text);
    }
    return 
$text;
}

?>
Gracias x sus opiniones
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 10:39.