Hoje estava eu aqui, sem fazer nada, e resolvi criar uma funçãozinha muito da legal que usa o API do TinyURL para converter as suas URLs.
O TinyURL faz o serviço de converter URLs gigantescas (não importa o seu tamanho) em URLs menores, de 20~25 caracteres (incluindo o http)
Ela é bem simples e a única coisa que você precisa fazer é passar a sua URL pra ela que ela vai te retornar a URL reduzida.
A vantagem de usar essa função (e não as que eu achei por aí, buscando no Google) é que ela identifica qual é o melhor método pra fazer a requisição à essa API, usando a biblioteca cURL, file_get_contents() ou fopen()+fgets(). ;D
Código da Função
<?php
/**
* Função para criar versões reduzidas das URLs
*
* @author Thiago Belem <contato@thiagobelem.net>
*
* @param string $url O endereço a ser reduzido
* @return string A nova URL (usando o TinyURL)
*/
function tinyURL($url)
{
define('TINYURL_API', 'http://tinyurl.com/api-create.php?url=%s');
$requestURL = sprintf(TINYURL_API, $url);
// Checa a existência da biblioteca cURL
$curl = (bool) function_exists('curl_init');
// Checa a variável allow_url_fopen no php.ini
$allow_url = (bool) ini_get('allow_url_fopen');
// Verifica se a biblioteca cURL existe e se não é possível usar URLs no fopen
if ($curl AND !$allow_url) {
// Caso exista, usa o cURL para fazer a requisição
$ch = curl_init($requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resultado = curl_exec($ch);
curl_close($ch);
// Caso não possa usar o cURL ou possa usar URLs no fopen
} else if ($allow_url) {
// Tenta usar o file_get_contents
$resultado = file_get_contents($requestURL);
// Se algo der errado, tenta com o fopen
if (!$resultado) {
$handle = @fopen($requestURL, "r");
$resultado = '';
if ($handle) while (!feof($handle)) $resultado .= fgets($handle, 4096);
}
// Caso não possa usar nenhum dos dois
} else {
// Exibe uma mensagem de erro
trigger_error('tinyURL: Não é possível usar o cURL nem URLs com fopen!', E_USER_ERROR);
}
// Retorna o resultado sem espaços adicionais ou a URL original caso algo tenha dado errado
return ((isset($resultado) AND !empty($resultado)) ? trim($resultado) : $url);
}
?>
Exemplo de uso (se é que precisa..)
<?php
echo tinyURL('http://blog.thiagobelem.net/');
// http://tinyurl.com/kwzg4w
?>
Espero que tenham gostado!
Você também vai gostar de ler:
- Função para validação de datas no PHP
- Removendo acentos de uma string – URLs amigáveis
- Mensagem de boas-vindas em função da hora
- Problema com a função ereg(i) – PHP 5.3.0
- Google te ajudará a reduzir conta de luz
Com as tags API, Busca, Código, cURL, empty, File, Google, PHP, Scripts, TinyURL, URL
Escrito por Thiago Belem
Gostou desse artigo?
Não se esqueça de assinar o RSS e divulgue-o para o mundo:
