shorturl google

随着微博对文章字数的限制,对冗长的url进行压缩就是必须的了,相同功能的东西不需要每个人都来做,既然谷歌已经提供了API那么就可以直接使用。谷歌官方API在Google Code Labs里正式发布了这里是文档这里是入门

目前的API除了具备网址缩短和恢复功能,还允许开发者获得短网址的历史和数据分析。Google说还在继续改进一些易用性方面的改进,让spam和恶意网址过滤系统变得再厉害点。

下面是一个使用示例:

<?php
/*
API Google URL Shortner
marcusnunes.com
*/

$url = $_GET['url'];                        //URL to short with goo.gl
if(!$url){$url = 'http://t.thinksns.com/';}    //example
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://goo.gl/api/url');   //goo.gl api url
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'user=toolbar@google.com&url='.$url.'&auth_token='.googlToken($url));
   
$saida = curl_exec($curl);
curl_close($curl);

if($saida){
    $json = json_decode($saida);
    echo $json->short_url;    //result
}


//goo.gl token
function googlToken($b){
    $i = tke($b);
    $i = $i >> 2 & 1073741823;
    $i = $i >> 4 & 67108800 | $i & 63;
    $i = $i >> 4 & 4193280 | $i & 1023;
    $i = $i >> 4 & 245760 | $i & 16383;
    $j = "7";
    $h = tkf($b);
    $k = ($i >> 2 & 15) << 4 | $h & 15;
    $k |= ($i >> 6 & 15) << 12 | ($h >> 8 & 15) << 8;
    $k |= ($i >> 10 & 15) << 20 | ($h >> 16 & 15) << 16;
    $k |= ($i >> 14 & 15) << 28 | ($h >> 24 & 15) << 24;
    $j .= tkd($k);
    return $j;
}

function tkc(){
    $l = 0;
    foreach (func_get_args() as $val) {
        $val &= 4294967295;
        $val += $val > 2147483647 ? -4294967296 : ($val < -2147483647 ? 4294967296 : 0);
        $l   += $val;
        $l   += $l > 2147483647 ? -4294967296 : ($l < -2147483647 ? 4294967296 : 0);
    }
    return $l;
}

function tkd($l){
    $l = $l > 0 ? $l : $l + 4294967296;
    $m = "$l";  //must be a string
    $o = 0;
    $n = false;
    for($p = strlen($m) - 1; $p >= 0; --$p){
        $q = $m[$p];
        if($n){
            $q *= 2;
            $o += floor($q / 10) + $q % 10;
        } else {
            $o += $q;
        }
        $n = !$n;
    }
    $m = $o % 10;
    $o = 0;
    if($m != 0){
        $o = 10 - $m;
        if(strlen($l) % 2 == 1){
            if ($o % 2 == 1){
                $o += 9;
            }
            $o /= 2;
        }
    }
    return "$o$l";
}

function tke($l){
    $m = 5381;
    for($o = 0; $o < strlen($l); $o++){
        $m = tkc($m << 5, $m, ord($l[$o]));
    }
    return $m;
}

function tkf($l){
    $m = 0;
    for($o = 0; $o < strlen($l); $o++){
        $m = tkc(ord($l[$o]), $m << 6, $m << 16, -$m);
    }
    return $m;
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值