May 9 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 que realice la misma función para otros lenguajes podríamos publicarlo también. Valga mencionar que al publicar obtengo un error de TAGS no vaĺidos, por lo que marco el check para que deje de verificar el post actual. Fuente: http://desarrolladoryempresario.blogspot.com/2009/05/codigo-php-en-blogger-formateando-tu_08.html

Mar 1 2009

Detectar navegador usando PHP.

Muchas veces es bastante útil el detectar el navegador que usa el cliente que se conecta a fin de saber si soporta ciertas funcionalidades o simplemente para hacerle cargar una hoja de estilos diferente. Se puede hacer a través de html, sin embargo una manera elegante de hacerlo es haciendo uso de PHP. Para esto, podemos escribir una función que nos detecte el navegador cliente.

<?php
function ObtenerNavegador($user_agent) {
     $navegadores = array(
          'Opera' => 'Opera',
          'Mozilla Firefox'=> '(Firebird)|(Firefox)',
          'Galeon' => 'Galeon',
          'Mozilla'=>'Gecko',
          'MyIE'=>'MyIE',
          'Lynx' => 'Lynx',
          'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)',
          'Konqueror'=>'Konqueror',
          'IE7' => '(MSIE 7\.[0-9]+)',
          'IE6' => '(MSIE 6\.[0-9]+)',
          'IE5' => '(MSIE 5\.[0-9]+)',
          'IE4' => '(MSIE 4\.[0-9]+)',
);
foreach($navegadores as $navegador=>$pattern){
       if (eregi($pattern, $user_agent))
       return $navegador;
    }
return 'Desconocido';
}
?>

Luego se puede agregar un condicional que realice una acción según cada resultado. Basado en: http://www.webintenta.com/detectar-el-navegador-con-php.html