Googleの短縮URLサービス goo.gl をPHPから使用するには以下のようなコードで実現できます。
https://code.google.com/apis/console/
ここから取得できます
function get_tiny_url($long_url=''){ $api_url = 'https://www.googleapis.com/urlshortener/v1/url'; $api_key = 'XXXXXXXXXXX'; $curl = curl_init("$api_url?key=$api_key"); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, '{"longUrl":"' . $long_url . '"}'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($curl); curl_close($curl); $json = json_decode($res); $tiny_url = $json->id; return $tiny_url; }
$long_url = 'http://xxxx.xxxx.xxx.com/xxxxxxxxxxxxxx.html'; $tiny_url = get_tiny_url($long_url);
元となるURLとそれに対する相対パスを指定すると絶対URLを作成する関数です。
元URL:http://www.test.com/gallery/index.html 相対パス:../contact.html URL:http://www.test.com/contact.html
使い方
$url = make_uri('元url','相対パス');
です。
//================ make_uri:version 1.4 function make_uri($base='', $rel_path=''){ $base = preg_replace('/\/[^\/]+$/','/',$base); $parse = parse_url($base); if (preg_match('/^https\:\/\//',$rel_path) ){ return $rel_path; } elseif ( preg_match('/^\/.+/', $rel_path) ){ $out = $parse['scheme'].'://'.$parse['host'].$rel_path; return $out; } $tmp = array(); $a = array(); $b = array(); $tmp = preg_split("/\//",$parse['path']); foreach ($tmp as $v){ if ($v){ array_push($a,$v); } } $b = preg_split("/\//",$rel_path); foreach ($b as $v){ if ( strcmp($v,'')==0 ){ continue; } elseif ($v=='.'){} elseif($v=='..'){ array_pop($a); } else{ array_push($a,$v); } } $path = join('/',$a); $out = $parse['scheme'].'://'.$parse['host'].'/'.$path; return $out; }
//============= make_apath:version 1.1 function make_apath($base='', $rel_path=''){ $base = preg_replace('/\/[^\/]+$/','/',$base); $parse = parse_url($base); if (preg_match('/^https\:\/\//',$rel_path) ){ return $rel_path; } elseif ( preg_match('/^\/.+/', $rel_path) ){ $out = $parse['scheme'].'://'.$parse['host'].$rel_path; return $out; } $tmp = array(); $a = array(); $b = array(); $tmp = preg_split("/\//",$parse['path']); foreach ($tmp as $v){ if ($v){ array_push($a,$v); } } $b = preg_split("/\//",$rel_path); foreach ($b as $v){ if ( strcmp($v,'')==0 ){ continue; } elseif ($v=='.'){} elseif($v=='..'){ array_pop($a); } else{ array_push($a,$v); } } $path = join('/',$a); return '/'.$path; }