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;
}
?>