Ver Mensaje Individual
  #42 (permalink)  
Antiguo 13/12/2009, 14:51
Avatar de chechu_
chechu_
 
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Aporte: Function: bbcode a html

Bueno, ya que he encontrado la solución a mi problema voy a intentar ayudar un poco.

Aquí tenéis la forma en que a mí me ha funcionado sin ningún tipo de problemas, solo he tengo que añadir unas interrogaciones en los (.*) de forma que quedan así (.*?)

Código PHP:
<?php
function bbcode2html($cadena){
    
    
/* Definicion de estilos para los elementos html */
    
    
DEFINE("PRE_DATO",' style="font-size:11px;color:#666;"');
    
DEFINE("BOX_STYLE",' style="border:1px solid #ccc;padding:5px;margin:3px;"');
    
    
/* Traspaso de BBCODE a HTML */
    
    
$bbcode[] = '/\[b\](.*?)\[\/b\]/is'$html[] = '<b>$1</b>';
    
    
$bbcode[] = '/\[u\](.*?)\[\/u\]/is'$html[] = '<u>$1</u>';
    
    
$bbcode[] = '/\[i\](.*?)\[\/i\]/is'$html[] = '<i>$1</i>';
    
    
$bbcode[] = '/\[s\](.*?)\[\/s\]/is'$html[] = '<s>$1</s>';
    
    
$bbcode[] = '/\[br\]/iU'$html[] = '<br />';
    
    
$bbcode[] = '/\[font=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/font\]/is'$html[] = '<span style="font-family:$1;">$2</span>';
    
    
$bbcode[] = '/\[size=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/size\]/is'$html[] = '<span style="font-size:$1px;">$2</span>';
    
    
$bbcode[] = '/\[url\](.*?)\[\/url\]/i'$html[] = '<a href="$1">$1</a>';
    
    
$bbcode[] = '/\[url=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/url\]/i'$html[] = '<a href="$1">$2</a>';
    
    
$bbcode[] = '/\[quote\](.*?)\[\/quote\]/is'$html[] = '<blockquote'.BOX_STYLE.'>$1</blockquote>';
    
    
$bbcode[] = '/\[quote=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/quote\]/is'$html[] = '<div'.PRE_DATO.'>"$1" Escribio:</div><blockquote'.BOX_STYLE.'>$2</blockquote>';
    
    
$bbcode[] = '/\[color=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/color\]/i'$html[] = '<font color="$1">$2</font>';
    
    
$bbcode[] = '/\[img\](.*?)\[\/img\]/i'$html[] = '<img src="$1" />';
    
    
$bbcode[] = '/\[email\](.*?)\[\/email\]/i'$html[] = '<a href="mailto:$1">$1</a>';
    
    
$bbcode[] = '/\[email=(?:"|\')?(.*?)(?:"|\')?\](.*?)\[\/email\]/i'$html[] = '<a href="mailto:$1">$2</a>';
    
    
$bbcode[] = '/\[list\](.*?)\[\/list\]/is'$html[] = '<ul>$1</ul>';
    
    
$bbcode[] = '/\[list=1\](.*?)\[\/list\]/is'$html[] = '<ol style="list-style-type:decimal">$1</ol>';
    
    
$bbcode[] = '/\[list=a\](.*?)\[\/list\]/is'$html[] = '<ol style="list-style-type:lower-alpha">$1</ol>';
    
    
$bbcode[] = '/\[\*\](.*?)/iU'$html[] = '<li>$1 ';
    
    
$bbcode[] = '/\[code\](.*?)\[\/code\]/is'$html[] = '<pre'.BOX_STYLE.'>$1</pre>';
    
    
$bbcode[] = '/\[align=(?:"|\')?left(?:"|\')?\](.*?)\[\/align\]/is'$html[] = '<div style="text-align:left;">$1</div>';
    
    
$bbcode[] = '/\[align=(?:"|\')?center(?:"|\')?\](.*?)\[\/align\]/is'$html[] = '<div style="text-align:center;">$1</div>';
    
    
$bbcode[] = '/\[align=(?:"|\')?right(?:"|\')?\](.*?)\[\/align\]/is'$html[] = '<div style="text-align:right;">$1</div>';
    
    
$cadena preg_replace($bbcode,$html,$cadena);
    
    return 
$cadena;
}
?>