Serializar array con JavaScript

Ayer os comentaba como pasar arrays por POST con PHP mediante los métodos serialize y unserialize y dejaba un poco al aire como hacerlo desde JavaScript.

Una manera bastante usual de hacerlo en JavaScript es concatenar los valores del array en un string separados por un token que luego nos permitirá volver a generar el array con la función split de PHP, sin embargo, nos puede ser interesante utilizar la serialización por defecto de PHP, de este modo al recoger el valor, únicamente tendremos que llamar a unserialize y volveremos a tener el array intacto. Continue reading

Pasar Array por POST con PHP

Si queremos pasar un array por POST y lo hacemos tal cual, veremos que la cosa no acaba de funcionar. La manera correcta de hacerlo es serializando previamente nuestro vector y una vez enviado, deserializarlo. Para ello PHP dispone de las funciones serialize y unserialize que harán el trabajo por nosotros.

En el siguiente ejemplo, vemos un uso sencillo de este método para enviar nuestros datos por la web:

<?php

if(!isset($_POST['frutas']) && $_POST['frutas']=="" ) {
  // Creamos el array frutas
  $frutas[] = "Cereza";
  $frutas[] = "Pera";
  $frutas[] = "Fresa";
  $frutas[] = "Manzana";
} else {
  // si existe lo deserializamos para poder tratarlo
  $frutas = unserialize(stripslashes($_POST['frutas']));
  var_dump($frutas);
}
?>
<html>
<form method="POST">
  <input type="hidden" name="frutas" value='<?php echo serialize($frutas) ?>'></input>
  <input type="submit" value="Pasar">
</form>
</html></pre>
El resultado de hacer un var_dump de la variable $frutas serializado sería:
<pre dir="ltr"><span style="color: #cc0000;">a:4:{i:0;s:6:"Cereza";i:1;s:4:"Pera";i:2;s:5:"Fresa";i:3;s:7:"Manzana";}</span>

Si queremos, por ejemplo, enviar un array desde el lado del cliente mediante AJAX, podríamos por ejemplo, crearnos un método javascript sencillo que nos serializase un array y así luego poder desserializarlo desde PHP.

Mañana publicaré en un nuevo post una función serialize para JavaScript, de este modo, podemos enviar desde el lado cliente un array serializado con el submit de un formulario o mediante AJAX.

Manipular archivos Excel con PHP

excel_2007¿Es posible tratar archivos xsl con PHP? pues un alma caritativa se ha currado una librería llamada PHP-ExcelReader basada en otra librería Java que nos permite tratar archivos de Excel con PHP de manera sencilla.

Aquí os dejo un ejemplo bastante simple que abre un archivo .xsl y pinta por pantalla todas las pestañas y su información en una tabla, muy simple, pero seguro que os da las bases para poder hacer lo que necesiteis. Continue reading

Imágenes en base-64 para Internet Explorer

Prácticamente todos los navegadores actuales, soportan imágenes codificadas en base64, sin embargo, esto no pasa con Internet Explorer (hasta su versión 7 al menos). Estareis pensando que no debería ser un problema ya que no solemos colocar las imágenes codificadas en el código html, sin embargo, podemos encontrarnos con la necesidad de tener embedida la imágen dentro del código por motivos x.

Un ejemplo de uso de imágenes en base64 en el código html sería:

<img src="data:image/gif;base64,R0lGODlhNQAkAKIAAHJycvwHBwAAqwCjC+3PDv///wAAAAAAACwAAAAANQAkAAAItAAHCBxIsODAAggTKlyYMIDDhxAjOjRIsSDDiwslaoRYseMAjCALbBzpsWJIjCM3lqR48mJKjSsNtmT4UmJMizMV1ox4k2BOnTsf9jz4E2FQoUM/FhV5NEBSpUWbOk26lOnRp1WlYl2qlSrXplujgvUq9irZn12HZh2r9qvZtmWDhkXLtufat3bdyj2bM23euDvn9q178+5euHTxFtYbmO9Mv4sB1xT8mHBMw40RD1Z8mXHNgAA7" width="200" alt="Base64 encoded image" />

Nos dará como resultado la siguiente imágen:

Base64 encoded image

mira el código fuente si todavía tienes dudas 😉 Continue reading

Implementar FullCalendar en Symfony

FullCalendar es un plugin jQuery que nos permite implementar de manera sencilla un calendario con una interfaz visual excelente y muy fácil de personalizar. Además, podemos hacer Drag&Drop (arrastrar y soltar) de los eventos agendados para pasarlos de un día a otro.

Hoy vamos a montar en symfony un módulo que nos mostrará un calendario con los eventos almacenados en nuestra base de datos. La parte de administración no la desarrollaré, pero con las completas herramientas que nos ofrece symfony, nos será muy fácil montarlo (si estás dando tus primeros pasos con Symfony, te recomiendo realizar este tutorial donde podrás ver paso a paso como se implementa un projecto con Symfony).

FullCalendar

Continue reading

Extraer URLs de imágenes de una web

¿Nunca habeis necesitado extraer todas las URLs de las imágenes de una web? Pues con este script mostraremos por pantalla las rutas de todas las imágenes contenidas en la página $url

$url = "http://www.elmejorcoche.com";

$html = file_get_contents($url);

preg_match_all("/<img[\s]+[^>]*?src[\s]?=[\s\"\']+(.*\.([gif|jpg|png|bmp|jpeg|tiff]{3,4}))[\"\']+.*?>/", $html, $images);

$images = $images[1];
$list = array();

foreach($images as $img) {
	echo $img."<br>";
}

Si tu versión de PHP es inferior a 4.3.0 (en primer lugar te recomiendo pasar a PHP5) puedes usar la siguiente función en lugar de file_get_contents:

function getHtml($url) {
    $foo = @fopen($url,"r");
    if($foo){
        while(!feof($foo)){
            $html.=fgets($foo);
        }
    }
    return $html;
}

Diferencias entre PHP4 y PHP5

PHP4 to PHP5A pesar de que hace varios años que PHP5 vio la luz y de que su uso es ya super común, nunca me había parado a mirar con detenimiento cuales son las principales diferencias entre PHP4 y PHP5.

Después de dar un paseo por la fantástica documentación de PHP, dejan bastante claro que se centraron principalmente en conseguir un soporte decente para la Programación Orientada a Objetos y mejorar significativamente el rendimiento y las capacidades de PHP intentando conseguir la máxima compatibilidad con su versión 4, lo qual ha sido un detalle ya que facilita enormemente la migración. Continue reading

PHPUnit – Tests Unitarios en PHP

PHPUnit LogoEl otro día os hablaba de la importancia de usar test unitarios. Hoy os dejo un pequeño documento sobre PHPUnit, un framework para PHP que nos permite crear y ejecutar juegos de tests unitarios de manera sencilla, además de analizar por nosotros los resultados de los mismos.

Aunque inicialmente PHP empezó como complemento dinámico para pequeñas páginas web, actualmente PHP se utiliza para desarrollar aplicaciones web complejas, por lo que es importante poder realizar las pruebas pertinentes a nuestro código. Continue reading

Enmascarar mails para evitar SPAM

Aquí os dejo una forma sencilla de enmascarar un mail en una web de manera que, por pantalla mostrará el texto, sin embargo, si miramos el código fuente (o lo que es lo mismo, un bot visita nuestra web en busca de direcciones de correo electrónico) no encontraremos este texto.

El “truco” está en transformar cada uno de los caracteres a unicode utilizando esta función que me he entretenido en programar: Continue reading

Configurar Smarty en Yii Framework

Smarty Logo

Ayer os comentaba como instalar Yii desde 0. La necesidad de poder añadirle Smarty a este Framework, me hizo dar varias vueltas por Google para ver si alguien lo había resuelto, y después de un rato, llegué a la conclusión de que hasta la fecha, nadie lo había publicado en la red.

Así que, me puse manos a la obra y generé esta pequeña extensión para poder utilizar este gestor de plantillas con Yii. El código creado es: Continue reading