JSON con PHP

  • 14/06/2009
  • 12:16 pm
  • unijimpe

JSON es un formato de intercambio de información muy practico pues se puede compartir datos como si fueran objetos, originalmente pensado para usarse con Javascript hoy veremos la forma de utilizarlo con PHP.

json-php

Como utilizar JSON con PHP
Si estamos utilizando PHP4 necesitaremos una clase que encargue de codificar/decodificar los datos en formato JSON. Para ello descargamos la clase JSON.php. Luego de ello la incluimos en nuestro archivo y la inicializamos llamando a Services_JSON para luego decodificar los datos con el método decode.

  1. require_once("JSON.php");
  2. $json = new Services_JSON;
  3. $obj = $json->decode($data)

Ejemplo de uso
Para desarrollar nuestro ejemplo, obtendremos los datos de Google AJAX Search API, el cual es un servicio que nos utilizar los resultados de búsqueda de Google y devuelve los datos en JSON. Para ello si deseamos obtener los datos de la búsqueda de la palabra 'Google' podremos acceder a http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Google, el cual devolverá los resultados en el siguiente formato:

  1. {"responseData":
  2. { "results": [
  3.   {
  4.    "GsearchResultClass": "GwebSearch",
  5.    "unescapedUrl": "http://en.wikipedia.org/wiki/Paris_Hilton",
  6.    "url": "http://en.wikipedia.org/wiki/Paris_Hilton",
  7.    "visibleUrl": "en.wikipedia.org",
  8.    "cacheUrl": "http://www.google.com/search?...",
  9.    "title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
  10.    "titleNoFormatting": "Paris Hilton",
  11.    "content": "In 2006, she released her debut..."
  12.   },
  13.   {
  14.    "GsearchResultClass": "GwebSearch",
  15.    "unescapedUrl": "http://www.imdb.com/name/nm0385296/",
  16.    "url": "http://www.imdb.com/name/nm0385296/",
  17.    "visibleUrl": "www.imdb.com",
  18.    "cacheUrl": "http://www.google.com/search?...",
  19.    "title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
  20.    "titleNoFormatting": "Paris Hilton",
  21.    "content": "Self: Zoolander. Socialite..."
  22.   },
  23.   ...
  24.  ],
  25.  "cursor": {
  26.   "pages": [
  27.    { "start": "0", "label": 1 },
  28.    { "start": "4", "label": 2 },
  29.    { "start": "8", "label": 3 },
  30.    { "start": "12","label": 4 }
  31.   ],
  32.   "estimatedResultCount": "59600000",
  33.   "currentPageIndex": 0,
  34.   "moreResultsUrl": "http://www.google.com/search?..."
  35.  }
  36. }, 200, null)
  37. }

Como pueden ver, toda la información esta estructurada como un objeto con lo cual es muy sencillo de acceder a todos los elementos como veremos a continuación.

Ahora el siguiente paso es obtener los datos de la ruta indicada y decodificarlas para posteriormente mostrarlas en nuestro HTML. Nótese que para hacer uso de este servicio es necesario tener un key, el cual es gratuito y lo pueden obtener en Sign-up for an AJAX Search API Key.

  1. require_once("JSON.php");   
  2. // read data
  3. $aQue = "Google";
  4. $aKey = "TU_API_KEY";
  5. $aUrl = "http://ajax.googleapis.com/ajax/services/search/web";
  6. if (isset($_GET['q'])){
  7.    $aQue = urlencode($_GET['q']);
  8. }
  9. $data = file_get_contents($aUrl."?v=1.0&key=".$aKey."&q=".$aQue);
  10. // decode data
  11. $json = new Services_JSON;
  12. $obj = $json->decode($data);

Hasta este punto tenemos los datos en la variable $obj, luego en el cuerpo de nuestro html hacemos un recorrido por cada elemento de los resultados. Como se puede ver en el siguiente código se accede a los elementos como objetos de manera sencilla.

  1. $results = $obj->responseData->results;
  2. for ($i=0; $i<sizeof($results); $i++) {
  3.     $tmp = $results[$i];
  4.     $tmpHTML.= "<a href=\"".$tmp->url."\">".$tmp->title."</a>";
  5.     $tmpHTML.= "<br />".$tmp->content."<br/>";
  6.     $tmpHTML.= "<i>".$tmp->url."</i><br /><br />";
  7. }
  8. echo $tmpHTML;

Podemos mejorar nuestro ejemplo si le agregamos una caja de texto para que ingrese su búsqueda y además de una hoja de estilos para que se vean mejor los resultados, con lo cual obtenemos /json/php.php.

Posts Relacionados

intiad: anuncios gratuitos

  • 09/06/2009
  • 12:35 pm
  • unijimpe

intiad es un nuevo sistema de anuncios clasificados gratuitos a nivel local y mundial. Ofrece la posibilidad de publicar anuncios sin necesidad de registrarse, pero para los usuarios registrados ofrece: sistema de mensajería, historial de anuncios, publicar tus anuncios directamente a Twitter, historial de los anuncios publicados, entre otras opciones.

intiad

Características para Usuarios no Registrados
Si eres un usuario que solo esta visitando Intiad puedes:

  • Buscar y leer todos los anuncios.
  • Filtrar los anuncios por país y región.
  • Ordenar los anuncios por fecha, precio, relevancia.
  • Publicar tus anuncios gratuitos de manera sencilla.
  • Enviar los anuncios a tus amigos.
  • Twittear un anuncio fácilmente.
  • Integrar el buscador en tu Browser (IE, Firefox, Flock) fácilmente.

intiad-screen

Características para los Usuarios Registrados
Si decides registrarte tendrás las siguientes ventajas adicionales:

  • Publicar anuncios sin necesidad de validarlos por email.
  • Marcar anuncios como favoritos.
  • Historial de anuncios.
  • Activar o desactivar anuncios.
  • Enviar mensajes a otros anunciantes.
  • Recibir mensajes sobre tus anuncios publicados.
  • Publicar anuncios automáticamente en Twitter.
  • Tener una dirección del tipo http://intiad.com/user/tunombre/ donde se verán todos tus anuncios.
  • Agregar datos de contacto (Teléfono, dirección, avatar).
  • Sugerencias de anuncios basado en tus búsquedas

Como pueden ver el servicio trae muchas características que lo hacen interesantes no solo para usuarios que quieran ofertar algún producto o servicio, si no también para pequeñas empresas o tiendas que pueden tener un lugar donde mostrar todos sus productos o servicios, esto sin la necesidad de hacer ninguna inversión adicional.

Características Técnicas
Respecto a como fue desarrollado el sistema podemos mencionar:

  • Desarrollado utilizando el patrón MVC con Zend Frawework.
  • Generación de Captcha para prevenir el SPAM.
  • Integración con Twitter.
  • Metatags (title, descriptión, keywords) optimizados para SEO.
  • Uso de URLs optimizadas para SEO.
  • Generación de Thumbnails y sello de agua para las imágenes.
  • Uso de Mootools para los efectos y AJAX.
  • CSS y JS minificados para acelerar la carga de la página.
  • Uso de GZIP y eTags para mejorar el rendimiento.
  • Cache de consultas y páginas disminuir el consume de CPU.
  • Uso de técnicas avanzadas en CSS para compatibilidad en los browsers.
  • Uso de CSS Reset y CSS para impresión.
  • Buscador Fulltext para facilitar las búsquedas.

Como pueden ver también se han hecho muchas innovaciones en la parte técnica y se han centrado también la funcionalidad, y rapidez de carga con lo cual se convierten en una excelente herramienta para ofertar anuncios de manera gratuita.

Posts Relacionados

WP-Archives 0.8

  • 02/06/2009
  • 12:04 am
  • unijimpe

WP-Archives es un plugin basado en SRG Clean Archives que permite mostrar un listado ordenados por fecha de todos los posts de un blog Wordpress, se integra perfectamente con tu blog pues hereda los estilos del mismo.

wp-archives

Esta vez les presentamos la versión 0.8 la cual esta disponible para la descarga desde el WordPress Plugin Directory en WP-Archives.

Características
Entre las características mas destacadas tenemos:

  • Facilidad de uso, solo con una línea de código.
  • Listado ordenado por fecha en grupos por meses.
  • Optimizado para Wordpress 2.7
  • Instalación automática desde el panel de plugins de Wordpress.
  • Se integra con el diseño de tu blog por que hereda los estilos.

Uso del Plugin
Una vez instalado el plugin, debes crear una nueva página en tu blog, puedes llamarlo 'Archivos', luego en el contenido debes colocar el siguiente código:

  1. <!--wp_archives-->

Como pueden ver, es muy sencillo de emplear y el resultado es limpio y muy útil para nuestros visitantes pues tiene acceso al listado completo de articulos escritos en el blog, pueden ver el plugin funcionando en nuestro listado de Archivos.

Posts Relacionados