Foros del Web » Programando para Internet » PHP »

Problema con BBCode y la función highlight_string().

Estas en el tema de Problema con BBCode y la función highlight_string(). en el foro de PHP en Foros del Web. Hola y gracias por adelantado. Mi problema es el siguiente: Estoy programando un sistema de noticias, el cual integra varias cosas (usuarios, rangos, etc.) y ...
  #1 (permalink)  
Antiguo 13/07/2011, 13:47
 
Fecha de Ingreso: enero-2011
Ubicación: Internet
Mensajes: 10
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Problema con BBCode y la función highlight_string().

Hola y gracias por adelantado.

Mi problema es el siguiente:
Estoy programando un sistema de noticias, el cual integra varias cosas (usuarios, rangos, etc.) y una de esas cosas es BBCode.

Todo me va bien, menos a la hora de hacer un BBCode que coloree código PHP.

Después de dar los códigos, explico mi problema.

Esta es la función del BBCode:
Código PHP:
function BBcode($texto){
   
$a = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[s\](.*?)\[\/s\]/is",
      
"/\[img\](.*?)\[\/img\]/is",
      
"/\[url=(.*?)\](.*?)\[\/url\]/is",
      
"/\[youtube\](.*?)\[\/youtube\]/is",
      
"/\[code\](.*)\[\/code\]/se"
   
);
   
$b = array(
      
"<i>$1</i>",
      
"<b>$1</b>",
      
"<u>$1</u>",
      
"<strike>$1</strike>",
      
"<img src=\"$1\" />",

       
"<a href=\"$1\" target=\"_blank\">$2</a>",
       
"<object width=\"400\" height=\"257\">
<param name=\"movie\" value=\"$1\"></param>
<param name=\"allowFullScreen\" value=\"true\"></param>
<embed src=\"$1\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" width=\"400\" height=\"257\"></embed>
</object>"
,
"'<pre>Codigo:</pre> <div style=\"color:#333;border:1px #333 solid;background-color:#999;margin:0;padding:0;\">'.highlight_string(stripslashes('$1'), true).'</div>'"
   
);
   
$texto preg_replace($a$b$texto);
   
$texto str_replace("/watch?v=""/v/"$texto);
   return 
$texto;

Y esta es la línea de código que muestra las noticias en la página principal:
Código PHP:
echo nl2br(BBcode($not['noticia'])); 
Lo que quiero hacer es que los usuarios no puedan postear código en los artículos/noticias enviadas. Por eso usé esto:
Código PHP:
echo nl2br(BBcode(htmlentities($not['noticia']))); 
Todo bien, no se permite código y salen las etiquetas. El problema es que entonces el código PHP que hay dentro de las etiquetas [ code ] pasa a ser esto:
Código:
&lt;?php

echo &quot;ESTO ES EL ECHO&quot;;

?&gt;
Es decir, que se me quedan los < y > y demás signos en simbología HTML.

¿Alguna solución? Si necesitáis algo más (código, otra explicación, etc.) avisad.
  #2 (permalink)  
Antiguo 13/07/2011, 14:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con BBCode y la función highlight_string().

Usa html_entity_decode() para decodificar las entidades antes de resaltar el código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/07/2011, 16:13
 
Fecha de Ingreso: enero-2011
Ubicación: Internet
Mensajes: 10
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema con BBCode y la función highlight_string().

Muchas gracias @pateketrueke como siempre ayudando los más novatos.

Ya se solucionó, pongo el código por si a alguien le pasa esto en un futuro:
Código:
"'<pre>Codigo:</pre> <div style=\"color:#333;border:1px #333 solid;background-color:#999;margin:0;padding:0;\">'.highlight_string(html_entity_decode(stripslashes('$1')), true).'</div>'"

Etiquetas: bbcode, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:36.