Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2010, 02:32
Vendetta
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 5
Más problemas con BBCodes

Buenas...

Ya tengo un par de temas por problemas que he tenido con BBCode que estoy haciendo ¬,¬ Ahora me funcionan los codigos...mas o menos. El caso es que si pongo el codigo solo con el texto que sea, funciona perfecto, el problema viene al mezclar cosas tipo "[color =#FFF][ i][/ i][/ color]" En este caso, solo funcionaba la cursiva y con la i fuera si que funciona pero claro, no voy a poner una nota para que el usuario se acuerde de no poner ningun codigo dentro del de color (Todos sabemos que no lo leeran y tendre 500 quejas diarias).

Tengo un amigo programador que me intentó ayudar pero ahora esta muy ocupado asi que no pudo prestarme más de 10 minutos. Me dijo que eso era porque el codigo del color seguramente estaba mal hecho. El problema es, que hago para que funcione? Estos dias no se a conectado, no he podido preguntarle, he intentado arreglarlo por mi cuenta pero no consigo que nada funcione ._. Voy tocando y a veces solo se pone en cursiva y ya, otras el codigo de la cursiva no funciona y se imprime como texto normal, etc...

Dejo el codigo relacionado con esto...

Código PHP:
Ver original
  1. $bb_code = array(
  2.     '/:\)/' => '<img src="images/smileys/icon_compress.gif" />',
  3.     '/:\(/' => '<img src="images/smileys/icon_pale.gif" />',
  4.     '/:\D/' => '<img src="images/smileys/icon_biggrin.gif" />',
  5.    
  6.     '/\[b\](.*?)\[\/b\]/is' => '<strong>$1</strong>',
  7.    
  8.     '/\[i\](.*?)\[\/i\]/is' => '<span style="font-style:italic;">$1</span>',
  9.    
  10.     '/\[u\](.*?)\[\/u\]/is' => '<u>$1</u>',
  11.    
  12.     '/\[img\](.*?)\[\/img\]/is' => '<img src="$1" border="0" />',
  13.    
  14.     '/\[citar\](.*?)\[\/citar\]/is' => '<div id="quote">$1</div>',
  15.  
  16.     '/\[center\](.*?)\[\/center\]/is' => '<div align="center">$1</div>',
  17.  
  18.         '/\[color\=(.*?)\](.*?)\[\/color\]/is' => '<span style="color: $1;">$2</span>',
  19.  
  20.     '/\[size\=(.*?)\](.*?)\[\/size\]/is' => '<span style="font-size: $1;">$2</span>'
  21. );

Aclaro tambien que uno de mis intentos fue cambiar el codigo de cursiva a algo como esto

Código PHP:
Ver original
  1. '/(.*)\[i\](.*?)\[\/i\](.*)/is' => '$1<span style="font-style:italic;">$2</span>$3',

Para ver que pasaba, aparte que me dijeron que asi deberia funcionar pero nada. Con ese, el codigo de cursiva deja de funcionar y se imprime como texto normal y corriente...

Bueno, ahí arriba esta la lista de codigos y aqui la función

Código PHP:
Ver original
  1. function bbcode($codigo) {
  2.     $search = array_keys($GLOBALS['bb_code']);
  3.     $codigo = preg_replace($search, array_values($GLOBALS['bb_code']), htmlentities($codigo));
  4.     return $codigo;
  5. }

Y dejo tambien el html, no creo que sea necesario pero bueno, por si acaso...

Código HTML:
Ver original
  1. <!-- [+] Contenedor Central [+] -->
  2.                     <div id="central">
  3.                         <div id="titulo"><b><?=$unico['tipo']?></b> - <?=$unico['titulo']?></div>
  4.                         <div id="noticia">
  5.                             <p><?=nl2br(bbcode($unico['content']))?></p>
  6.                         </div>
  7.                        
  8.                         <? if( $unico['notas'] != NULL ): ?>
  9.                         <div id="subtit"><b>Notas del Autor</b></div>
  10.                         <div id="noticia">
  11.                             <p><?=$unico['notas']?></p>
  12.                         </div>
  13.                         <? endif; ?>
  14.                     </div>
  15.                     <!-- [-] Contenedor Central [-] -->

Siento postear tanto sobre esto pero esque no consigo nunca que funcione como tiene que funcionar x_x