Foros del Web » Programando para Internet » PHP »

Colorear codigo entre etiquetas [code] [/code]

Estas en el tema de Colorear codigo entre etiquetas [code] [/code] en el foro de PHP en Foros del Web. hola, llevo ya dos semanas rompiendome la cabeza, espero que me puedan ayudar a solucionar esto que se me dificulta :S miren tengo este codigo ...
  #1 (permalink)  
Antiguo 14/03/2011, 01:15
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 7
Colorear codigo entre etiquetas [code] [/code]

hola, llevo ya dos semanas rompiendome la cabeza, espero que me puedan ayudar a solucionar esto que se me dificulta :S

miren tengo este codigo para colorear codigo php en mi web
Código PHP:
<?php
function color($texto) {
$texto str_replace("""\n"$texto);
$texto str_replace(">"">"$texto);
$texto str_replace("<""<"$texto);
$texto str_replace("&""&"$texto);
$texto str_replace('$''\$'$texto);
$texto str_replace('n''\n'$texto);
$texto str_replace('r''\r'$texto);
$texto str_replace('t''\t'$texto);
$texto str_replace('"''"'$texto);
$texto stripslashes($texto);
ob_start();
$nivelviejo=error_reporting(0);
highlight_string($texto);
error_reporting($nivelviejo);
$buffer ob_get_contents();
ob_end_clean();
$buffer=str_replace("","",$buffer);
$buffer=str_replace("","",$buffer);
return 
$buffer;
}
?>
pero si pongo esto por ejemplo
Código PHP:
<?php 
$var 
"hola <a href=google.com>google</a>, tengo [code]<?php echo 'estres'; ?>[/code]";
echo 
color($var);
?>
me convierte toda la variable en codigo html coloreado incluso el link, cuando solo quiero que se convierta en html coloreado lo que esta dentro de las etiquetas [ code ] y [ /code ]

Alguna idea de como puedo lograr esto, a mi se me agotaron :(
Porfavor les agradeceria mucho su ayuda!!

Saludos
  #2 (permalink)  
Antiguo 14/03/2011, 05:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Colorear codigo entre etiquetas [code] [/code]

Usa expresiones regulaes para obtener la parte que deseas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 14/03/2011, 14:25
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 7
Respuesta: Colorear codigo entre etiquetas [code] [/code]

un ejemplo? :(
  #4 (permalink)  
Antiguo 14/03/2011, 14:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Colorear codigo entre etiquetas [code] [/code]

[APORTE] Expresiones PCRE
  #5 (permalink)  
Antiguo 16/03/2011, 23:32
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 7
Sonrisa Respuesta: Colorear codigo entre etiquetas [code] [/code]

lo logre con preg_replace!!
gracias Gastorv! ;)
si a alguien le sirve aqui esta el arreglo que hice:
Código PHP:
<?php
function color($texto) {
    
$texto nl2br($texto);
    
$textostripslashes($texto);
    
$texto str_replace("[codigo]"'Código:<br><div style="background-color:#FFFFFF; margin: 0px; padding: 6px; border: 1px inset; width: 645px; text-align: left; overflow: auto">[codigo]'$texto);
    
$texto str_replace("[/codigo]""[/codigo]<br /></div></div></td></tr></table>"$texto);
     
$texto str_replace('&quot;','"',$texto); 
    
$simple_search = array(
'#\[codigo\](.*?)\[\/codigo\]#se'
); 
    
$simple_replace = array(
"highlight_string(stripslashes(html_entity_decode(str_replace('<br />','','$1'))), true)"
);
$texto preg_replace ($simple_search$simple_replace$texto); 
return 
$texto
}
?>

Etiquetas: colorear, etiquetas, 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 23:19.