Ayuda BBCode

Iniciado por naderST, 14 Agosto 2008, 03:34 AM

0 Miembros y 1 Visitante están viendo este tema.

naderST

Buenas estoy haciendo una funcion para implementar bbcode, esto es lo que llevo:

Código (php) [Seleccionar]

<?php
function bbcode($str){
$str htmlentities($str);
$str str_replace("<""&lt;"$str);
$str str_replace(">""&gt;"$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 str_replace("<ul><br />""<ul>"$str);
$str str_replace("</li><br />""</li>"$str);
$str preg_replace('/\[code\](.*?)\[\/code\]/is''<b>Código:</b><br /><div id="codigo"><code>$1</code></div>'$str);
$str nl2br($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.

Diabliyo

Cita de: naderST en 14 Agosto 2008, 03:34 AM
Buenas estoy haciendo una funcion para implementar bbcode, esto es lo que llevo:

Código (php) [Seleccionar]

<?php
function bbcode($str){
$str htmlentities($str);
$str str_replace("<""&lt;"$str);
$str str_replace(">""&gt;"$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 str_replace("<ul><br />""<ul>"$str);
$str str_replace("</li><br />""</li>"$str);
$str preg_replace('/\[code\](.*?)\[\/code\]/is''<b>Código:</b><br /><div id="codigo"><code>$1</code></div>'$str);
$str nl2br($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.