PDA

Ver la Versión Completa : Colorear Código PHP


D-MO
23-05-2006, 02:27:06
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 (http://clubdelphi.com/foros/showpost.php?p=121034&postcount=11)" que nos dejo roman en este hilo (http://clubdelphi.com/foros/showthread.php?t=28138), 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 (http://dec.clubdelphi.com/coloreador-sintaxis/) que nos da dec en su blog (http://dec.clubdelphi.com/weblog) 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:

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.

dec
23-05-2006, 03:02:41
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. :D

D-MO
23-05-2006, 03:10:05
jejeje, ya tengo una nueva función:D.
Gracias por el aporte.

Saludos en cadena.

roman
23-05-2006, 03:34:37
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

dec
23-05-2006, 04:30:49
Hola,


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 (http://www.juantorreslopez.com/) de algo o qué. ;)

D-MO
23-05-2006, 06:27:23
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?:confused:.

Aquí el "ejercicio" resuelto:
Primero el archivo que colorearemos, llamado code.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:
<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.

dec
23-05-2006, 11:32:15
Hola,



$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.

D-MO
23-05-2006, 14:44:19
...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í:

<?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:
á=&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.

roman
23-05-2006, 14:46:00
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

D-MO
23-05-2006, 15:10:00
...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:
<?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

<?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:D.

Saludos.

dec
23-05-2006, 22:44:46
Hola,


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. :D