viernes, 8 de mayo de 2009

Código PHP en Blogger, formateando tu código.



Casualmente hoy tuve la necesidad de insertar código PHP en mi blogger, me sorprendió el hecho de que no existiera algún tipo de etiqueta (o no a primera vista) para insertar código y que fuese formateado automáticamente.



Googleando un poco me encontré con un blog (web2development) donde el autor comentaba una posible solución con un script que el mismo generó. Sin embargo era necesario que ver el código fuente una vez corrido el script para obtener finalmente el resultado (script formateado). Realicé unas pequeñas mejoras al script y decidí alojarlo en nuestro servidor para que sirva como herramienta para mí y quien lo necesite.

Puedes emplear el siguiente enlace para formatear tus códigos en PHP (Inicialmente PHP, quisiera más adelante añadir para otros lenguajes).

Formatea Tu Código

No estaría completo este post si no incluyera el código del script con las modificaciones que realicé. Básicamente el script imprime el resultado en un div aparte; también preferí insertar un salto en html en la línea quince (15). Se agregaron algunas lineas para cambiar los caracteres que causaban conflictos. Almacené temporalmente el resultado del script en un archivo para luego obtener directamente su código fuente y generarlo para uso del usuario.

1
<!--- Form for code -->
2 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" style="margin-bottom: 40px;"><div id="formulario">
3 <textarea rows="20" cols="80" name="codigo"></textarea><br />
4 <input type="submit" name="enviar" value="Formatear" /></div>
5 </form>
6 <?php
7
if( !empty( $_POST['codigo'] ) ) {
8
$codigo = $_POST['codigo'];
9
$codigo = str_replace( "\t", " ", $codigo );
10
$codigo = highlight_string( stripslashes( $codigo ), true );
11
12
$line = 1;
13
$buffer = array();
14
$cod = explode( "<br />", $codigo );
15 foreach(
$cod as $codLine ) {
16
$buffer[] = "<b>$line</b>&nbsp;&nbsp;" . $codLine;
17
$line++;
18 }
19
20
$codigo = implode( "<br />", $buffer );
21
// HACK:
22
$codigo = str_replace( "<b>1</b>&nbsp;&nbsp;<code>", "<code><b>1</b>&nbsp;&nbsp;", $codigo );
23 echo
'<div id="formated" style="border: double #dfdfdf;"><h3> Este es tu código formateado </h3>';
24 echo
'<p>'.$codigo.'</p><hr />';
25
//Gets the source from a file previously created and modified
26
$abrir=fopen("tmp.txt", "w"); //open file
27
fwrite($abrir, $codigo); //save code obtained previously
28
fclose($abrir); //close file
29
$url = 'http://formatealo.terysoftware.com/tmp.txt';
30
$lineas = file($url);
31 for (
$i = 0; $i <count($lineas); $i++) {
32
$resultado = $resultado.htmlentities($lineas[$i])."<br />";
33 }
34
35 echo
'<h3>Inserta este código en tu sitio </h3>'.$resultado.'</div>';
36 }
37
?>
38

39 </div>



Sin duda se pueden mejorar algunas cosas, espero alguien pueda ayudar a mejorar el código. Los recursos empleados fueron:

http://www.php.net/manual/es/function.fopen.php
http://www.php.net/htmlentities
http://informatica-practica.net/solocodigo/index.php/2007/12/27/mostrar-codigo-fuente-de-una-pagina-con-php/
web2development

El código formateado puedes pegarlo sin inconveniente en el editor por default que trae el blogger. Si tienes algún script en PHP que realice la misma función para otros lenguajes podríamos publicarlo también. ¿ Tienes algún aporte ?

1 comentario: