Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2010, 20:43
Avatar de Carlmycol
Carlmycol
 
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 5 meses
Puntos: 3
Problema con nl2br y htmlentities

Estoy haciendo una funcion que "parsee" el bbcode,.. pero al usar nl2br si el texto contiene un codigo,.. convierte el salto de linea en un <br> pero en ves de saltar la linea sale algo como esto

Código PHP:
<br><br>
?><br><br>
$pizza=array('anchoas', 'queso', 'jamon');<br><br>
foreach ($pizza as $ingrediente)<br><br>
{<br><br>
    echo $ingrediente.'<br>';<br><br>
}<br><br>
?><br><br> 
Mi funcion es algo como esto

Código PHP:
function BBC_Smileys ($string) {
   
$new=$string;
   
$a = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[img\](.*?)\[\/img\]/is",
      
"/\[url=(.*?)\](.*?)\[\/url\]/is",
      
"/\[code=(.+)\](.+)\[\/code\]/is",
   );

   
$b = array(
      
"<i>$1</i>",
      
"<strong>$1</strong>",
      
"<u>$1</u>",
      
"<img src=\"$1\" />",
      
"<a href=\"$1\" target=\"_blank\">$2</a>",
      
"<div id=\"code\"><pre class=\"brush: $1\">$2</pre></div>",
   );
   

   
$texto preg_replace($a$b$new);
   
   return 
nl2br($texto);

El problema es que si uso htmlentities() al principio entonces sale el html todo raro como esto

Código:
<div id="code"><pre class="brush: php"><br />
?&gt;<br />
$pizza=array('anchoas', 'queso', 'jamon');<br />
foreach ($pizza as $ingrediente)<br />
{<br />
echo $ingrediente.'&lt;br&gt;';<br />
}<br />
?&gt;<br />
</pre></div>
Como podria solucionar esto?

Saludos, gracias de antemano