NovaMonoFix
Errores PHP
X
Usuario
Password
0 FPS

Colorear código con PHP (Parte 6 HTML)

24 de Octubre del 2011 por Josep Antoni Bover, 0 visitas, 0 comentarios, 0 votos
Categorías : PHP, HTML, Programación.
La web está en segundo plano, animación en pausa.
Cargando animación...
Colorear código con PHP (Parte 6 HTML)

Finalmente llegamos a la sexta parte de los tutoriales de colorear código, donde el objetivo será el lenguaje HTML. A decir verdad es el más complicado de pensar, ya que puede disponer de partes CSS, JavaScript y PHP que debemos pintar con su correspondiente esquema de colores.

No es casualidad que haya dejado el HTML para el final, ya que para poder hacerlo necesitábamos tener las partes anteriores (JavaScript, CSS y PHP) programadas.

Al igual que con los otros tutoriales vamos a utilizar un Diccionario de palabras para HTML, pero el algoritmo para parsear HTML será algo distinto.

Como siempre, vamos a empezar por ver un ejemplo básico de un archivo HTML con los elementos más comunes que podemos encontrar :

Documento HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ejemplo colorear HTML</title>
<link href='ColorearCodigoPHP_HTML_Ejemplo.css' rel='stylesheet' type='text/css' />
<!-- Código JavaScript -->
<script type="text/javascript">
// JavaScript : MiFuncion
function MiFuncion(Parametro) {
alert(MiParametro + 10);
}
</script>
<!-- Código CSS -->
<style>
/* CSS MiEstilo */
.MiEstilo { margin-left:auto; margin-right:auto };
</style>
</head>
<body>
<table><tr>
<td><pre style="border-color:#000; border-width:1px; border-style:solid">
<!-- Código PHP -->
<?php
// PHP : Imprimimos en el documento HTML
echo PintarHTML("
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Ejemplo colorear HTML</title>
<!-- Código JavaScript -->
<script type='text/javascript'>
// JavaScript : MiFuncion
function MiFuncion(Parametro) {
alert(MiParametro + 10);
}
</script>
<!-- Código CSS -->
<style>
/* CSS MiEstilo */
.MiEstilo { margin-left:auto; margin-right:auto };
</style>
</head>
<body>
<a href='ColorearCodigoPHP_HTML.php'>Volver a devildrey33</a>.
</body>
</html>"); ?>
</pre></td>
</tr></table>
<a href="/Blog/ColorearCodigoPHP_HTML">
Volver a devildrey33
</a>.
</body>
</html>

En este ejemplo se han incluido partes de códigos JavaScript, CSS y PHP para que veáis que son pintadas tal y como se especificaba en los tutoriales anteriores. En total podemos observar 12 colores distintos dentro de este ejemplo, pero algunos son utilizados por fragmentos de otros lenguajes.

Lo primero que vamos a necesitar va a ser definir dichos colores dentro de un archivo CSS :

CSS con los colores necesarios
1
2
3
4
5
6
7
8
9
10
11
12
13
.Codigo_Negro { font-family:Courier New; font-size:12px; color:#000000; }
.Codigo_Verde { font-family:Courier New; font-size:12px; color:#006600; }
.Codigo_VerdeClaro { font-family:Courier New; font-size:12px; color:rgb(0, 153, 153); }
.Codigo_Azul { font-family:Courier New; font-size:12px; color:#0000FF; }
.Codigo_AzulClaro { font-family:Courier New; font-size:12px; color:rgb(102, 129, 255); }
.Codigo_AzulOscuro { font-family:Courier New; font-size:12px; color:#009; }
.Codigo_Lila { font-family:Courier New; font-size:12px; color:rgb(153, 0, 153); }
.Codigo_Rosa { font-family:Courier New; font-size:12px; color:rgb(255, 58, 255); }
.Codigo_Rojo { font-family:Courier New; font-size:12px; color:#CC0000; }
.Codigo_Amarillo { font-family:Courier New; font-size:12px; color:rgb(255, 153, 0); }
.Codigo_Gris { font-family:Courier New; font-size:12px; color:rgb(128, 128, 128); }
.Codigo_Marron { font-family:Courier New; font-size:12px; color:rgb(153, 0, 58); }

Ahora vamos a crear array con los delimitadores y un array con el diccionario de etiquetas reservadas para HTML y que también llevaran su color correspondiente :

CSS con los colores necesarios
1
2
3
4
5
6
7
8
9
10
11
// Array de los caracteres delimitadores para etiquetas HTML
$_DelimitadoresHTML = array(" ", "/", ">", "<");
// Array con el diccionario de palabras y su color pertinente para PHP
$_DiccionarioHTML = array( array("Palabra" => "table" , "Color" => "Codigo_VerdeClaro"),
array("Palabra" => "tr" , "Color" => "Codigo_VerdeClaro"),
array("Palabra" => "td" , "Color" => "Codigo_VerdeClaro"),
array("Palabra" => "img" , "Color" => "Codigo_Lila"),
array("Palabra" => "a" , "Color" => "Codigo_Verde")
);

Aunque el diccionario de palabras no sea muy extenso no quiere decir que no existan más, y como sabéis de ejemplos anteriores bastaría con agregar la palabra clave y su color al array si fuera necesario añadir alguna más.

Una vez tenemos el array de palabras reservadas ya podemos empezar a pensar en el algoritmo. A diferencia de los ejemplos anteriores no vamos a hacerlo en dos fases (pre-escaneo y post-escaneo). Esto es porque nosotros sabemos perfectamente donde empieza y donde termina una etiqueta a partir de los caracteres '<' y '>' por lo que no necesitamos separar nada. Recordad que la idea del pre-escaneo y post-escaneo surgía por la necesidad de separar comentarios y strings de lo que pudieran ser palabras clave, ya que por ejemplo podíamos tener la palabra 'if' dentro de un string, y a pesar de que 'if' es una palabra reservada, al estar dentro de un string no queremos pintarla con su color, si no con el color del string.

Hay que remarcar que una etiqueta puede constar de varias partes, por ejemplo "<a href='http://www.url.com'>" en este caso el nombre de la etiqueta es 'a' y contiene el atributo 'href' que indica la url destino. Además de esto hay tres tipos de etiquetas, las etiquetas de apertura, las etiquetas de clausura, y las etiquetas completas. Para tener claro este concepto vamos a ver las siguientes tres etiquetas : "<a href='url'>", "</a>" y "<img src='url' />". La primera etiqueta es de apertura ya que luego los datos introducidos se trataran según el ámbito de esta. La segunda etiqueta es de clausura ya que una vez se llegue a ella no se añadirá nada mas dentro del link. Y la tercera etiqueta es una etiqueta completa ya que se abre y se cierra en la misma etiqueta.

Al igual que con los tutoriales anteriores utilizaremos la variable $Estado que nos indicara que debemos hacer en ese momento. Esta vez la variable $Estado puede tener 16 estados distintos contando el '' o Sin estado, veamos por encima cada estado y su razón de ser.

EstadoDescripción
'' (Sin estado)Debemos buscar cualquier posibilidad que nos indique un nuevo estado a seguir.
'PHP'Este estado nos indica que estamos dentro de un código PHP y que para salir de él debemos encontrar ?>. Al salir volveremos al estado ''.
'JavaScript_Inicio'Este estado nos indica que estamos dentro de una etiqueta "<script" y que para salir de el debemos encontrar >. Al salir del estado pasaremos al estado 'JavaScript_Fin'.
'JavaScript_Str1'Este estado nos indica que estamos dentro de un string en una etiqueta "<script" y que para salir de él debemos encontrar '. Al salir volveremos al estado 'JavaScript_Inicio'.
'JavaScript_Str2'Este estado nos indica que estamos dentro de un string en una etiqueta "<script" y que para salir de él debemos encontrar ". Al salir volveremos al estado 'JavaScript_Inicio'.
'JavaScript_Fin'Este estado nos indica que estamos dentro de un código JavaScript, y que para salir debemos encontrar </script>. Al salir volveremos al estado ''.
'CSS_Inicio'Este estado nos indica que estamos dentro de una etiqueta "<style", y que para salir debemos encontrar >. Al salir del estado pasaremos al estado 'CSS_Fin'.
'CSS_Str1'Este estado nos indica que estamos dentro de un string de una etiqueta "<style", y que para salir debemos encontrar '. Al salir del estado pasaremos al estado 'CSS_Inicio'.
'CSS_Str2'Este estado nos indica que estamos dentro de un string de una etiqueta "<style", y que para salir debemos encontrar ". Al salir del estado pasaremos al estado 'CSS_Inicio'.
'CSS_Fin'Este estado nos indica que estamos dentro de un código CSS, y que para salir debemos encontrar </style>. Al salir volveremos al estado ''.
'Etiqueta'Este estado nos indica que estamos dentro de una etiqueta cualquiera, y que para salir de él debemos encontrar >. Al salir volveremos al estado ''.
'Etiqueta_Str1'Este estado nos indica que estamos dentro de un string de una etiqueta cualquiera, y que para salir de él debemos encontrar '. Al salir del estado pasaremos al estado 'Etiqueta'.
'Etiqueta_Str2'Este estado nos indica que estamos dentro de un string de una etiqueta cualquiera, y que para salir de él debemos encontrar ". Al salir del estado pasaremos al estado 'Etiqueta'.
'Comentario'Este estado nos indica que estamos dentro de un comentario HTML y que para salir debemos encontrar -->. Al salir volveremos al estado ''.
'Estilo_Str1'Este estado nos indica que estamos dentro de un string del atributo style de una etiqueta cualquiera, y que para salir debemos encontrar '. Al salir del estado pasaremos al estado 'Etiqueta'.
'Estilo_Str2'Este estado nos indica que estamos dentro de un string del atributo style de una etiqueta cualquiera, y que para salir debemos encontrar ". Al salir del estado pasaremos al estado 'Etiqueta'.

Una vez vistos los estados vamos a ver la primera parte de la función PintarHTML que pertenece a la fase en la que el estado esta vacio y buscamos un nuevo estado :

Función PHP PintarHTML (sin estado)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Función que colorea el texto HTML especificado según el esquema de colores de Dreamweaver
// - $Texto : String con el texto HTML a colorear.
function PintarHTML($Texto) {
$_Debug = false;
// El primer paso es separar todas las etiquetas en un array
$Texto = str_replace(' ', ' ', $Texto); // Re-emplazo tabuladores
$Texto = str_replace('&', '&', $Texto); // Re-emplazo simbolos AND
$TamTexto = strlen($Texto);
$PalabraActual = "";
$Estado = ""; // Puede ser : PHP, JavaScript_Inicio, JavaScript_Str1, JavaScript_Str2, JavaScript_Fin,
// CSS_Inicio, CSS_Str1, CSS_Str2, CSS_Fin, Etiqueta, Etiqueta_Str1, Etiqueta_Str2,
// Comentario, Estilo_Str1, Estilo_Str2
$TextoColoreado = "";
$InicioEtiqueta = 0;
$InicioEstilo = 0;
for ($i = 0; $i < $TamTexto; $i++) {
switch ($Estado) {
case "" : // Sin estado
if ($Texto[$i] == "<") { // Posible etiqueta abierta
if (substr($Texto, $i, 7) == "<script") { // JavaScript
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<span class='Codigo_Marron'><script";
$Estado = "JavaScript_Inicio";
$i += 6;
}
else if (substr($Texto, $i, 6) == "<style") { // CSS
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<span class='Codigo_Lila'><style";
$Estado = "CSS_Inicio";
$i += 5;
}
else if (substr($Texto, $i, 5) == "<?php") { // PHP
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<?php ";
$Estado = "PHP";
$i += 5;
}
else if (substr($Texto, $i, 4) == "<!--") { // Comentario
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<span class='Codigo_Gris'><!--";
$Estado = "Comentario";
$i += 4;
}
else { // Otras etiquetas
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<";
$Estado = "Etiqueta";
$InicioEtiqueta = $i + 1;
}
}
else {
$PalabraActual .= $Texto[$i];
}
break;

En esencia esta parte de la función escanea todos los caracteres del HTML para buscar específicamente el carácter '<' que nos indica el inicio de una etiqueta. En caso de encontrar el carácter '<' miramos lo que viene a continuación para determinar si es una etiqueta especial, o una etiqueta común.

NOTA : las etiquetas comunes son las que miraremos en el diccionario, en cambio las otras etiquetas como "style", "script", "<?php" y "<!--" deben ser tratadas de un modo especial, y estas además ya incluyen su color/es.

Ahora vamos a revisar la parte del código que hace referencia a las etiquetas comunes :

Función PHP PintarHTML (Etiquetas comunes)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Estado : String con comillas simples dentro de una etiqueta
case "Etiqueta_Str1" :
if (_FinString1($Texto, $i) == true) {
$PalabraActual .= "'</span>";
$Estado = "Etiqueta";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : String con comillas dobles dentro de una etiqueta
case "Etiqueta_Str2" :
if (_FinString2($Texto, $i) == true) {
$PalabraActual .= '"</span>';
$Estado = "Etiqueta";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : dentro de una etiqueta
case "Etiqueta" :
if ($Texto[$i] == ">") { // Final de la etiqueta
$Color = _BuscarEtiqueta(substr($Texto, $InicioEtiqueta, $i - $InicioEtiqueta));
$TextoColoreado .= "<span class='".$Color."'>".$PalabraActual."></span>";
$PalabraActual = "";
$Estado = "";
}
else if ($Texto[$i] == "<") { // Estabamos en una etiqueta falsa
$TextoColoreado .= $PalabraActual;
$PalabraActual = "<";
$InicioEtiqueta = $i + 1;
}
else if ($Texto[$i] == "s") { // miramos si es el atributo style
if (substr($Texto, $i, 5) == "style") {
while ($Texto[$i] != "'" && $Texto[$i] != '"') $PalabraActual .= $Texto[$i ++];
if ($Texto[$i] == "'") $Estado = "Estilo_Str1";
else if ($Texto[$i] == '"') $Estado = "Estilo_Str2";
$PalabraActual .= "<span class='Codigo_Azul'>".$Texto[$i ++];
$InicioEstilo = $i;
}
else $PalabraActual .= $Texto[$i];
}
else if ($Texto[$i] == "'") { // String con comillas simples dentro de la etiqueta
$PalabraActual .= "<span class='Codigo_Azul'>'";
$Estado = "Etiqueta_Str1";
}
else if ($Texto[$i] == '"') { // String con comillas dobles dentro de la etiqueta
$PalabraActual .= '<span class="Codigo_Azul">"';
$Estado = "Etiqueta_Str2";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : inicio del atributo style encapsulado por comillas simples
case "Estilo_Str1" :
if (_FinString1($Texto, $i) == true) {
$PalabraActual .= PintarEstiloCSS(substr($Texto, $InicioEstilo, $i - $InicioEstilo))."'</span>";
$Estado = "Etiqueta";
}
break;
// Estado : inicio del atributo style encapsulado por comillas dobles
case "Estilo_Str2" :
if (_FinString2($Texto, $i) == true) {
$PalabraActual .= PintarEstiloCSS(substr($Texto, $InicioEstilo, $i - $InicioEstilo)).'"</span>';
$Estado = "Etiqueta";
}
break;

Tal y como comente anteriormente las etiquetas comunes pueden tener atributos, y en especial hay uno de ellos que debe tratarse de forma distinta. Este es el atributo 'style', dicho atributo hace referencia a los estilos css para esa etiqueta. Si nos encontramos con el debemos pintar el string que contiene utilizando la función de pintado CSS.

En la línea 31 detectamos que el atributo es el 'style', llegados a este punto determinamos si viene en un string con comillas simples o comillas dobles para así poder asignar el estado Estilo_Str1 o Estilo_Str2, y marcamos el carácter donde empieza el string.

Dependiendo del tipo de string (comillas simples o dobles) llegaremos en algún momento a la línea 51 o 58, y en ese momento miraremos si se ha terminado el string. De ser ese el caso utilizaremos la función PintarEstiloCSS para pintar ese texto utilizando las reglas del CSS.

Ahora que hemos visto las etiquetas comunes pasemos a ver las etiquetas script :

Función PHP PintarHTML (Etiquetas script)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Estado : inicio de un texto de un atributo dentro de una etiqueta script con comillas simples
case "JavaScript_Str1" :
if (_FinString1($Texto, $i) == true) {
$PalabraActual .= "'</span>";
$Estado = "JavaScript_Inicio";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : inicio de un texto de un atributo dentro de una etiqueta script con comillas dobles
case "JavaScript_Str2" :
if (_FinString2($Texto, $i) == true) {
$PalabraActual .= '"</span>';
$Estado = "JavaScript_Inicio";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : dentro de una etiqueta script
case "JavaScript_Inicio" :
if ($Texto[$i] == ">") { // Final de una etiqueta script
$TextoColoreado .= $PalabraActual."></span>";
$PalabraActual = "";
$Estado = "JavaScript_Fin";
}
else if ($Texto[$i] == "'") { // String dentro de una etiqueta script con comillas simples
$PalabraActual .= "<span class='Codigo_Azul'>'";
$Estado = "JavaScript_Str1";
}
else if ($Texto[$i] == '"') { // String dentro de una etiqueta script con comillas dobles
$PalabraActual .= '<span class="Codigo_Azul">"';
$Estado = "JavaScript_Str2";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : se ha encontrado el final de una etiqueta script
case "JavaScript_Fin" :
if (substr($Texto, $i, 9) == "</script>") { // Comprobamos que sea la etiqueta de cierre
if (strlen($PalabraActual) > 1) $TextoColoreado .= PintarJavaScript($PalabraActual);
else $TextoColoreado .= $PalabraActual;
$TextoColoreado .= "<span class='Codigo_Marron'></script></span>";
$PalabraActual = "";
$Estado = "";
$i += 8;
}
else $PalabraActual .= $Texto[$i];
break;

De esta parte de código lo que más nos interesa es el estado "JavaScript_Fin". En el comprobamos cuando se ha llegado a la etiqueta de clausura script, para luego utilizar la función PintarJavaScript con el código JavaScript previamente leído y almacenado en la variable $PalabraActual.

Para más información sobre la función PintarJavaScript podéis consultar Colorear código con PHP (Parte 3 JavaScript).

Vista la parte para JavaScript podemos continuar con la parte para etiquetas style que contienen código CSS :

Función PHP PintarHTML (Etiquetas style)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Estado : string dentro de una etiqueta style con comillas simples
case "CSS_Str1" :
if (_FinString1($Texto, $i) == true) {
$PalabraActual .= "'</span>";
$Estado = "CSS_Inicio";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : string dentro de una etiqueta style con comillas dobles
case "CSS_Str2" :
if (_FinString2($Texto, $i) == true) {
$PalabraActual .= '"</span>';
$Estado = "CSS_Inicio";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : etiqueta style inicial
case "CSS_Inicio" :
if ($Texto[$i] == ">") { // Final de la etiqueta style
$TextoColoreado .= $PalabraActual."></span>";
$PalabraActual = "";
$Estado = "CSS_Fin";
}
else if ($Texto[$i] == "'") { // String con comillas simples dentro de la etiqueta style
$PalabraActual .= "<span class='Codigo_Verde'>'";
$Estado = "CSS_Str1";
}
else if ($Texto[$i] == '"') { // String con comillas dobles dentro de la etiqueta style
$PalabraActual .= '<span class="Codigo_Verde">"';
$Estado = "CSS_Str2";
}
else $PalabraActual .= $Texto[$i];
break;
// Estado : etiqueta style de cierre
case "CSS_Fin" :
if (substr($Texto, $i, 8) == "</style>") {
$TextoColoreado .= PintarEstilosCSS($PalabraActual);
$TextoColoreado .= "<span class='Codigo_Lila'></style></span>";
$PalabraActual = "";
$Estado = "";
$i += 8;
}
else $PalabraActual .= $Texto[$i];
break;

Esta parte funciona de forma muy similar a la parte de JavaScript de forma que cuando llegamos al estado "CSS_Fin" buscamos cuando se cierra la etiqueta style. Una vez encontrado el cierre pasamos la función PintarEstilosCSS a la variable $PalabraActual en la que previamente se había almacenado todo el código CSS, y esta nos retorna el código CSS correctamente pintado.

NOTA : en el tutorial Colorear código con PHP (Parte 2 CSS) podemos ver la función PintarCSS que es prácticamente igual a la función PintarEstilosCSS. De todas formas no son iguales ya que en el tutorial 2 no había previsto encontrarme con el atributo style dentro del código HTML, por lo que la función PintarCSS ha quedado separada en dos funciones : PintarEstiloCSS y PintarEstilosCSS. La función PintarEstiloCSS se ha diseñado para pintar una clase o una id sin su nombre, y la función PintarEstilosCSS pinta los nombres de clase/id y luego llama a PintarEstiloCSS para pintar sus atributos.

Visto esto podemos ver lo que queda de la función PintarHTML :

Función PHP PintarHTML (PHP y comentarios)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Estado : Comentario HTML (puede ser multilinea)
case "Comentario" :
if ($Texto[$i] == ">" && $Texto[$i - 1] == "-" && $Texto[$i - 2] == "-") {
$PalabraActual .= "></span>";
$Estado = "";
}
else if ($Texto[$i] == "<") $PalabraActual .= "<";
else if ($Texto[$i] == ">") $PalabraActual .= ">";
else $PalabraActual .= $Texto[$i];
break;
// Estado : dentro de un código php
case "PHP" :
if ($Texto[$i] == ">" && $Texto[$i - 1] == "?") {
$TextoColoreado .= PintarPHP($PalabraActual.">");
$PalabraActual = "";
$Estado = "";
}
else $PalabraActual .= $Texto[$i];
break;
}
}
$TextoColoreado .= $PalabraActual;
if ($_Debug == true) { echo "PintarHML<pre>"; print_r($Etiquetas); echo "</pre>"; }
return $TextoColoreado;
}

En esta parte tenemos los comentarios y el código PHP. El tema de los comentarios no tiene mucha complicación, básicamente hay que mirar si encontramos "-->" para cortar el comentario.

Por la parte del código PHP tampoco es demasiado complicada, vamos introduciendo todo el texto en la variable $PalabraActual, y cuando encontramos el texto "?>" le pasamos la variable $PalabraActual a la función PintarPHP.

Para más información sobre la función PintarPHP podéis consultar Colorear código con PHP (Parte 4 PHP).

A parte de esto faltaría por ver las funciones _FinString1, _FinString2 y _BuscarEtiqueta. Pero como estas funciones se han comentado sobradamente en los tutoriales anteriores las omitiremos por hoy. Si deseáis más información sobre dichas funciones os recomiendo mirar el siguiente tutorial Colorear código con PHP (Parte 3 JavaScript).

Y con esto terminamos por hoy! aunque no ponemos punto y final a los tutoriales para pintar código con PHP. Mañana podréis ver la clase devildrey33_PintarCodigo que se utiliza en esta web.

Como siempre os dejo la posibilidad de ver y descargar el ejemplo de hoy :

Este código ha quedado obsoleto, por favor echa un vistazo a la versión 2 : Resaltar sintaxis de un código fuente.