Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2005, 12:56
Avatar de mixba
mixba
 
Fecha de Ingreso: noviembre-2003
Ubicación: CPU (Interior)
Mensajes: 116
Antigüedad: 20 años, 6 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