Acortar una url es algo bastante común hoy en día, sobretodo en las redes sociales como Twitter donde el número de caracteres es limitado.
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.