Autor
|
Tema: Ayuda BBCode (Leído 1,682 veces)
|
naderST
|
Buenas estoy haciendo una funcion para implementar bbcode, esto es lo que llevo: <?php function bbcode($str){ $str = preg_replace('/\[b\](.*?)\[\/b\]/is', '<b>$1</b>', $str); $str = preg_replace('/\[i\](.*?)\[\/i\]/is', '<i>$1</i>', $str); $str = preg_replace('/\[u\](.*?)\[\/u\]/is', '<u>$1</u>', $str); $str = preg_replace('/\[url\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$1</a>', $str); $str = preg_replace('/\[url\=(.*?)\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$2</a>', $str); $str = preg_replace('/\[img\](.*?)\[\/img\]/is', '<div id="imagen"><img src="$1" border="0" /></div>', $str); $str = preg_replace('/\[quote\=(.*?)\](.*?)\[\/quote\]/is', '<b>$1 dijo:</b><br /><div id="codigo"><code>$2</code></div>', $str); $str = preg_replace('/\[color\=(.*?)\](.*?)\[\/color\]/is', '<span style="color:$1">$2</span>', $str); $str = preg_replace('/\[size\=(.*?)\](.*?)\[\/size\]/is', '<font size="$1">$2</font>', $str); $str = preg_replace('/\[list\](.*?)\[\/list\]/is', '<ul>$1</ul>', $str); $str = preg_replace('/\[li\](.*?)\[\/li\]/is', '<li>$1</li>', $str); $str = preg_replace('/\[code\](.*?)\[\/code\]/is', '<b>Código:</b><br /><div id="codigo"><code>$1</code></div>', $str); return $str; } ?>
La cuestion es en la etiqueta code quiero que si se pone dentro de ella la etiqueta [ b ] no se ponga en negrita ni nada, no se si me explico. Gracias.
|
|
|
En línea
|
|
|
|
Diabliyo
Desconectado
Mensajes: 1.441
shell# _
|
Buenas estoy haciendo una funcion para implementar bbcode, esto es lo que llevo: <?php function bbcode($str){ $str = preg_replace('/\[b\](.*?)\[\/b\]/is', '<b>$1</b>', $str); $str = preg_replace('/\[i\](.*?)\[\/i\]/is', '<i>$1</i>', $str); $str = preg_replace('/\[u\](.*?)\[\/u\]/is', '<u>$1</u>', $str); $str = preg_replace('/\[url\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$1</a>', $str); $str = preg_replace('/\[url\=(.*?)\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$2</a>', $str); $str = preg_replace('/\[img\](.*?)\[\/img\]/is', '<div id="imagen"><img src="$1" border="0" /></div>', $str); $str = preg_replace('/\[quote\=(.*?)\](.*?)\[\/quote\]/is', '<b>$1 dijo:</b><br /><div id="codigo"><code>$2</code></div>', $str); $str = preg_replace('/\[color\=(.*?)\](.*?)\[\/color\]/is', '<span style="color:$1">$2</span>', $str); $str = preg_replace('/\[size\=(.*?)\](.*?)\[\/size\]/is', '<font size="$1">$2</font>', $str); $str = preg_replace('/\[list\](.*?)\[\/list\]/is', '<ul>$1</ul>', $str); $str = preg_replace('/\[li\](.*?)\[\/li\]/is', '<li>$1</li>', $str); $str = preg_replace('/\[code\](.*?)\[\/code\]/is', '<b>Código:</b><br /><div id="codigo"><code>$1</code></div>', $str); return $str; } ?>
Cambia el orden como vas haciendo tu BBCode, primero pon el preg_replace() de la estiqueda de CODE, y cuando la insetes en el STR insertala asi: htmlentities( $1, ENT_QUOTES ); y listo.... La cuestion es en la etiqueta code quiero que si se pone dentro de ella la etiqueta [ b ] no se ponga en negrita ni nada, no se si me explico. Gracias.
|
|
|
En línea
|
|
|
|
|
|