shorturl google

    技术2022-05-19  21

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

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

    下面是一个使用示例:

    <?php/*API Google URL Shortnermarcusnunes.com*/

    $url = $_GET['url'];                        //URL to short with goo.glif(!$url){$url = 'http://t.thinksns.com/';}    //example$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://goo.gl/api/url');   //goo.gl api urlcurl_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 tokenfunction 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)