Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Colorear Código PHP

Creo que muchos en alguna ocasion quisimos saber de que manera hacer el coloreo de sintaxis de php u otros lenguajes en nuestra web, pues la verdad es que existen muchas formas de llevar esto a cabo, una de ellas es crear el código desde cero para realizar esta ación basandonos en el "tutorial" que nos dejo roman en este hilo, el cual no menosprecio para nada; otra forma de hacerlo es tomando algun script de terceros que nos facilitarán el trabajo, como la opción que nos da dec en su blog la cual podrás descargar desde aquí, pero la forma mas sencilla de hacer esto, disponible para resaltar código php únicamente, es con una función de php, ¡si!, php nos da esta opción, y la forma de hacerlo es la siguiente:

Código PHP:
highlight_file('fichero/a/colorear.php'); 
y de esta manera obtendremos el coloreado de sintaxis que queriamos sin complicarnos tanto la vida.

Otra alternativa a esta misma función es su alias "show_source()", la que funciona exactamente de la misma manera y nos dá el mismo resultado.

Aclaro que estas funciones te colorearán el código de los ficheros en el mismo servidor del fichero que hace la llamada, si intentas hacerlo con ficheros de otro servidor te mostrará únicamente el código html de la página.

Saludos de colores.
Responder Con Cita
  #2  
Antiguo 23-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Es curiosa, sí, la funcioncita. Tiene una prima hermana: highlight_string() El nombre lo dice todo... no como yo cuando me pongo a nombrar identificadores que no hay quien los entienda de lo rebuscados que son o son tan simples que no sirven para lo que se supone que sirve un identificador.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-05-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
jejeje, ya tengo una nueva función.
Gracias por el aporte.

Saludos en cadena.
Responder Con Cita
  #4  
Antiguo 23-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Las funciones que incluye php son muy útiles, claro está y con unas cuantas líneas extra de código se pueden ampliar, por ejemplo, para numerar las líneas del código fuente, con gutter y todo. Se los dejo de ejercicio

// Saludos
Responder Con Cita
  #5  
Antiguo 23-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
Las funciones que incluye php son muy útiles, claro está y con unas cuantas líneas extra de código se pueden ampliar, por ejemplo, para numerar las líneas del código fuente, con gutter y todo. Se los dejo de ejercicio
Yo ya he tenido bastante por hoy profesor, mañana será otro día, Dios mediante y con la mano delante, y dicen que hay más que longanizas.

Aún así probé a ver... pero las funciones de que hablamos pueden cadenas, no "Array's", que hubiera sido lo suyo para incluir cada "elemento" del "Array" de resultados dentro de un elemento de una lista HTML ordenada. ¡Ya tendríamos los números de línea! Pero mi gozo en un pozo. Y ahora voy a ver si me entero de algo o qué.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 23-05-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
pues antes de poner el "ejercicio" resuelto, quisiera expresar una duda que me ha estado rondando en la cabeza durante estos minutos que duré escribiendo este código, ¿Que es gutter?.

Aquí el "ejercicio" resuelto:
Primero el archivo que colorearemos, llamado code.php
Código PHP:
<?php
//-->Fichero de ejemplo, coloreador de sintaxis con número de línea

class miClase{
    var 
$nombre;
    function 
miClase($param=''){
        
$this->nombre=$param;
    } 
}
//->Fin de la Clase

$datos = new miClase('Darwin');
echo 
$datos->nombre;
//-->Fin del código
?>
Luego, el código que se encargará de colocar los número de línea y colorear el código fuente:
Código PHP:
<style type="text/css">
<!--
.columna {
    font-size: 14px;
    width:30px;
    color: #FFFFFF;
    background-color: #CCCCCC;
    border-right-width: 1px;
    border-left-width: 1px;
    border-right-style: solid;
    border-left-style: solid;
    border-right-color: #666666;
    border-left-color: #666666;
    text-align:center;
}
-->
</style>
<?php 
$str 
file_get_contents('code.php');

$dat highlight_string($str,true);
$arr explode ('<br />',$dat);
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<?php
for ($i=1;$i<count($arr);$i++){
    echo 
'<tr><td class="columna">'.$i.'</td><td>&nbsp;'.$arr[$i].'</td></tr>';}
?>
</table>
Talvés no será la mejor opción, pero funciona y el resultado final es el deseado.

Saludos enumerados.

Última edición por D-MO fecha: 23-05-2006 a las 16:30:39. Razón: camriar file() por file_get_contents()
Responder Con Cita
  #7  
Antiguo 23-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Darwin
Código PHP:
$arr explode ('<br />',$dat); 
¡Meeeeeek! ¿Seguro que algo así va bien? Creo recordar que anoche lo probé y no me ofreció los resultados esperados. También puede ser que estuviera ya más dormido que despierto. Pero, ¿qué pasa si aparece el "<br />" en algún otro lugar que no sea el comienzo de una nueva línea? No sé. Me voy a callar porque no aporto soluciones... tengo cierta cosa pendiente que me obsesiona. Privilegios de clase, las obsesiones. Disculpadme.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 23-05-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por dec
...Pero, ¿qué pasa si aparece el "<br />" en algún otro lugar que no sea el comienzo de una nueva línea?...
Bueno, creo que a lo que te refieres a que si en el código php exisitera algo de html que contenga '<br />', ago así:
Código PHP:
<?php ...
echo 
$var.'<br />';
Lo que pasa en este caso, al pasarlo por la función highlight_string() convierte todo el código html a sus caracteres especiales (no se si asi se dice), ej:
Código:
á=&aacute;
<br />=&lt;br&nbsp;/&gt;
Y así para todos los caracteres especiales del html, pero bueno, esta es solo mi opinion y no sé la verdad si hay algo mal en ella.

Saludos codificados.
Responder Con Cita
  #9  
Antiguo 23-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Darwin: yo lo veo muy bien. Te comento nada más que con la función file_get_contents() te ahorras el ciclo para "pegar" las líneas.

David: los <br /> los coloca la función highlight_() así que no creo que aparezcan en lugares incómodos

// Saludos
Responder Con Cita
  #10  
Antiguo 23-05-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por roman
...Te comento nada más que con la función file_get_contents() te ahorras el ciclo para "pegar" las líneas...
Bueno, código actualizado, solo me falta agregar que tambien es posible hacerlo con una cadena y no solo con un archivo, esto se haría asi:
Código PHP:
<?php
$dat
"<?php ";
$dat.= "//-->Fichero de ejemplo, coloreador de sintaxis con número de línea"
$dat.= "";
$dat.= "class miClase{ ";
$dat.= "    var $nombre; ";
$dat.= "    function miClase($param=''){ ";
$dat.= "        $this->nombre=$param; ";
$dat.= "    }  ";
$dat.= "}//->Fin de la Clase ";
$dat.= "";
$dat.= "$datos = new miClase('Darwin'); ";
$dat.= "echo $datos->nombre; ";
$dat.= "//-->Fin del código ";
$dat.= "?> ";
?>
o también una en una sola asignación a la variable $dat
Código PHP:
<?php
$dat
="<?php \n//-->Fichero de ejemplo, coloreador de sintaxis con número de línea\n...";
?>
Colocando al final de cada línea de código el caracter de escape \n para que al pasarlo por la funcion highlight_string() haga los cortes de línea correctos.

Otra cosa a tomar en cuenta es que la función highlight_string() no colorea el código si no está dentro de las etiquetas '<?php' y '?>', por lo que se debería de análizar si las contiene, quizá lo recomendable sería meidante el uso de expresiones regulares pero eso se lo dejo a roman si quiero conservar mi cabeza sana y salva por el dia de hoy.

Saludos.
Responder Con Cita
  #11  
Antiguo 23-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
David: los <br /> los coloca la función highlight_() así que no creo que aparezcan en lugares incómodos
Hum... bueno. Si es así, como dice también Darwin, vale.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
colorear filas de un dbgrid soyhugo Varios 4 06-08-2010 00:20:37
Colorear (resaltar) la sintaxis de código fuente variado dec PHP 3 16-12-2005 02:09:39
Colorear un Calendario RONPABLO Varios 3 17-10-2004 15:16:15
Colorear código PHP gatsu PHP 6 29-08-2004 08:45:08
Colorear un dia en un MonthCalendar Camomilas Varios 2 14-09-2003 17:38:24


La franja horaria es GMT +2. Ahora son las 16:36:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi