Si lo queremos de hacer desde nuestra sitio web de PHP tenemos una forma muy sencilla con la API de Google.
Los pasos a dar serían los siguientes:
1. Lo primero que necesitaremos será darnos de alta una cuenta de Google Developer, que lo puedes hacer fácilmente si tienes una cuenta de Google.
2. Deberemos ir la la consola del desarrollador y dar de alta un nuevo proyecto. Le pondremos el nombre que deseemos y una vez creado iremos en el menú de la izquierda al ítem APIs & Auth (APIs y autenticación en español). Seleccionando APIs en el submenú veremos toda la lista de servicios que nos ofrece Google. Buscaremos URL Shortener API y lo activaremos desde la parte superior de la página. Hecho esto elegiremos en el submenú Credentials (Credenciales en español) y haremos clic en Crear clave nueva. Nos aparecerá una ventana emergente y seleccionaremos Clave de servidor. Ahí nos pedirá que pongamos una IP si queremos limitar desde donde se puede llamar al servicio. Con todo esto realizado ya nos dará la clave de la api que necesitaremos posteriormente para acortar la url.
3. El último paso será coger el código que os dejo a continuación y cambiar únicamente la clave de la api por la vuestra y la url por la que necesitéis.
Código PHP
Lo primero que veremos será la clase que implementa las funciones de acortar y expandir:
class GoogleShortUrl{ // Constructor function __construct($key, $apiURL = 'https://www.googleapis.com/urlshortener/v1/url'){ $this->apiURL = $apiURL.'?key='.$key; } // Acortar la URL function shorten($url) { $response = $this->send($url); return isset($response['id']) ? $response['id'] : false; } // Expandir la URL function expand($url) { $response = $this->send($url, false); return isset($response['longUrl']) ? $response['longUrl'] : false; } // Enviar información a Google function send($url, $shorten = true){ // Inicializamos curl y definimos el objeto $curlObj = curl_init(); if ($shorten){ curl_setopt($curlObj, CURLOPT_URL, $this->apiURL); curl_setopt($curlObj, CURLOPT_POST, 1); curl_setopt($curlObj, CURLOPT_POSTFIELDS, json_encode(array("longUrl"=>$url))); curl_setopt($curlObj, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); } else { curl_setopt($curlObj, CURLOPT_URL, $this->apiURL.'&shortUrl='.$url); } curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curlObj, CURLOPT_HEADER, 0); // Ejecutamos el post $response = curl_exec($curlObj); // Cerramos la conexión curl_close($curlObj); // Devolvemos la respuesta return json_decode($response, true); } }
Ahora solamente nos queda hacer la llamada a la clase anterior y acortar o expandir una url:
// Creamos una instancia de la clase $key = 'miclave'; $shorter = new GoogleShortUrl($key); // Acortamos la URL $shortname = $shorter->shorten("http://softontherocks.blogspot.com"); echo $shortname; // devuelve http://goo.gl/VF1HJ // Expandimos la URL $longname = $shorter->expand($shortname); echo $longname; // devuelve http://softontherocks.blogspot.com
Espero que os sirva en vuestros proyectos.