PHPで短縮URLを作成する方法まとめ(全7サイト)

短縮URLを作成するためのAPI。これを提供するサービスはGoogleをはじめ、Bitly、Ow.lyなど、様々です。今回はそれぞれのサービスを使って、サーバーサイドで短縮URLを作成する方法をまとめてみました。webサービス開発などの際に必要になったら、ぜひ、ご利用下さい。プログラミングのサンプル言語としてPHPを用いています。

goo.gl (Google)

Googleが提供する短縮URLです。動作が安定していること、統計を確認できる機能もあり、Bit.lyと並んでスタンダードなAPIと言えるでしょう。

準備(APIキーの入手)

「プロジェクトを作成」をクリックする
「プロジェクトを作成」をクリックする

Googleの場合、まずはAPIキーを取得する必要があります。デベロッパー・コンソールの画面にアクセスして下さい。左上にある「プロジェクトを作成」というボタンをクリックします。

プロジェクト名を入力する
プロジェクト名を入力する

プロジェクト名を入力し、「作成」をクリックして下さい。特に理由がない限り、プロジェクトIDの欄を変更する必要はありません。しばらく待つと、プロジェクトが作成されます。

「API」をクリックする
「API」をクリックする

プロジェクトが作成されたら、左側メニューにある「API」という項目をクリックして下さい。Googleが提供するAPIの一覧が表示されます。

「URL Shortener API」をクリックする
「URL Shortener API」をクリックする

検索フォームに「URL Shortener API」と入力し、ヒットした「URL Shortener API」という項目名をクリックして下さい。

「URL Shortener API」を有効にする
「URL Shortener API」を有効にする

「URL Shortener API」の専用画面に移動します。「APIを有効にする」というボタンをクリックして下さい。これで、このプロジェクトで「URL Shortener API」を利用できるようになります。

「新しいキーを作成」をクリックする
「新しいキーを作成」をクリックする

左側メニューの「認証情報」をクリックして下さい。アプリケーションを管理する画面に移動するので、「新しいキーを作成」というボタンをクリックして下さい。このAPIの利用に認証は必要ありません。

「ブラウザ キー」をクリックする
「ブラウザ キー」をクリックする

アプリケーションを作成します。今回はウェブ上で利用するので「ブラウザ キー」をクリックして下さい。

許可対象リファラーを設定する
許可対象リファラーを設定する

続いて、どのホストのウェブページから、このアプリケーションを利用できるかを設定します。最初はエラーの原因を極力排除するため、許可対象リファラーの設定は空白(どのウェブページからも利用可)で、そのまま「作成」をクリックして下さい。ここは、サービスが本稼働になる時に設定しましょうか。

APIキーを確認する
APIキーを確認する

戻った画面に、作成されたキーの情報が掲載されています。「ブラウザ アプリケーションのキー」という項目の中の「APIキー」を確認して下さい。これを利用します。

短縮URLの作成方法

リクエスト方法

Googleの場合、取得したAPIキーをkeyプロパティの値にして、エンドポイントにリクエストを送ります。

POST https://www.googleapis.com/urlshortener/v1/url?key={API Key}

リクエストの内容はJSON形式で送ります。短縮したい元のURLアドレスは、longUrlプロパティの値として指定して下さい。

JSON

{ "longUrl": "https://syncer.jp/" }

取得できるJSON

リクエストに成功すると、下記のJSONデータを取得できます。その中のidプロパティの値に、作成された短縮URLがあります。

JSON

{"kind": "urlshortener#url","id": "http://goo.gl/8ltvm5","longUrl": "http://syncer.jp/how-to-make-shoten-url"}

サンプルプログラム

下記はGoogleの短縮URLを仕様したサンプルプログラムです。APIキーを設定して、起動してみて下さい。

PHP

<?php

	// APIキーの設定
	$api_key = '' ;

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL , 'https://www.googleapis.com/urlshortener/v1/url?key=' . $api_key ) ;
	curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) ) ;	// JSONの送信
	curl_setopt( $curl, CURLOPT_CUSTOMREQUEST , 'POST' ) ;			// POSTメソッド
	curl_setopt( $curl, CURLOPT_POSTFIELDS, json_encode( array( 'longUrl' => $before_url ) ) ) ;		// 送信するJSONデータ
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->id ) && !empty( $obj->id ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->id ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

bit.ly (Bitly)

Bitlyが提供する短縮URLの作成APIです。短縮URL作成サービスとしてはGoogleと共に、メジャーです。

準備(アクセストークンの入手)

「Manage My Apps」をクリックする
「Manage My Apps」をクリックする

BitlyのAPIを利用するには、アクセストークンが必要です。メールアドレスの認証が完了しているユーザーアカウントを用意したら、下記リンクから開発者向けのページへ移動して下さい。上部メニューの「My App」をクリックし、続いて「Manage My Apps」をクリックして下さい。

「Generate Token」をクリックする
「Generate Token」をクリックする

開発者のアプリ管理画面に移動します。一番下のフォームに、ユーザーアカウントのパスワードを入力し、「Generate Token」をクリックして下さい。

アクセストークンを確認する
アクセストークンを確認する

アクセストークンが発行されます。このアクセストークンは、他人に知られないように保管しましょう。

短縮URLの作成方法

リクエスト方法

取得したアクセストークンをaccess_tokenプロパティ、元のURLをlongUrlプロパティの値にして、エンドポイントにリクエストを送ります。

GET https://api-ssl.bitly.com/v3/shorten?access_token={アクセストークン}&longUrl={元のURLアドレス}

取得できるJSON

下記はリクエスト成功時に取得できるJSONデータです。urlプロパティに、目的の短縮URLがあります。

JSON

{"status_code": 200,"status_txt": "OK","data": {"long_url": "http://syncer.jp/how-to-make-shoten-url","url": "http://bit.ly/1qUphXy","hash": "1qUphXy","global_hash": "1qUphXz","new_hash": 0}}

サンプルプログラム

下記はBitlyの短縮URLを仕様したサンプルプログラムです。アクセストークンを設定して、起動してみて下さい。

PHP

<?php

	// アクセストークンの設定
	$access_token = '' ;

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL , 'https://api-ssl.bitly.com/v3/shorten?access_token=' . $access_token . '&longUrl=' . rawurlencode( $before_url ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;			// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->data->url ) && !empty( $obj->data->url ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->data->url ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

is.gd (id.gd)

is.gdが提供する短縮URLの作成APIです。

短縮URLの作成方法

リクエスト方法

is.gdの場合、アクセストークンなど必要ありません。すぐに利用することが可能です。エンドポイントに、urlプロパティにURLアドレスを指定して、リクエストを送って下さい。

GET http://is.gd/create.php?format=simple&format=json&url={元のURLアドレス}

取得できるJSON

返ってきたJSONデータの、shorturlプロパティに、目的の短縮URLがあります。

JSON

{"shorturl": "http://is.gd/GpL3QF"}

サンプルプログラム

is.gdのAPIを使って、短縮URLを取得するサンプルプログラムです。

PHP

<?php

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, 'http://is.gd/create.php?format=simple&format=json&url=' . rawurlencode( $before_url ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->shorturl ) && !empty( $obj->shorturl ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->shorturl ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

v.gd (v.gd)

is.gdと同じ運営元のv.gdが提供する短縮URLの作成APIです。

短縮URLの作成方法

リクエスト方法

is.gdとAPIの利用方法が同じです。なお、v.gdの場合、クッションページを介すことになります。

GET http://v.gd/create.php?format=simple&format=json&url={元のURLアドレス}

取得できるJSON

返ってきたJSONデータの、shorturlプロパティに、目的の短縮URLがあります。

JSON

{"shorturl": "http://v.gd/oZEszm"}

サンプルプログラム

v.gdのAPIを利用するためのサンプルプログラムを用意しました。よろしければ、お使い下さい。

PHP

<?php

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl , CURLOPT_URL , 'http://v.gd/create.php?format=simple&format=json&url=' . rawurlencode( $before_url ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->shorturl ) && !empty( $obj->shorturl ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->shorturl ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

tiny.cc (TinyCC)

TinyCCが提供する短縮URLの作成APIです。

準備(APIキーの入手)

「Manage My Apps」をクリックする
「Manage My Apps」をクリックする

利用するにはAPIキーが必要です。まずはTinyCCにアクセスし、ユーザーアカウントを取得して下さい。

「Generate Token」をクリックする
「Generate Token」をクリックする

ユーザーアカウントを取得後、ドキュメントのページに、あなたのAPIキーが表示されています。

短縮URLの作成方法

リクエスト方法

リクエストURLを作成するのは少し面倒で、APIキー、ユーザーアカウントのID、そして元のURLアドレスの指定が必要です。

GET http://tiny.cc/?c=rest_api&m=shorten&version=2.0.3&format=json&longUrl={元のURLアドレス}&login={ユーザーID}&apiKey={APIキー}

取得できるJSON

返ってきたJSONデータの、short_urlプロパティに、短縮処理されたURLがあります。

JSON

{
	"errorCode":"0",
	"errorMessage":"",
	"results":{
		"short_url":"http:\/\/tiny.cc\/s74jpx",
		"userHash":"s74jpx",
		"hash":"s74jpx"
	},
	"statusCode":"OK"
}

サンプルプログラム

TinyCCのAPIを使った短縮URL作成プログラムのサンプルです。1日あたりのリクエスト上限が50回のため、デモではエラーが発生するかもしれません。

PHP

<?php

	// ユーザーIDの設定
	$user_id = '' ;

	// APIキーの設定
	$api_key = '' ;

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl , CURLOPT_URL , 'http://tiny.cc/?c=rest_api&m=shorten&version=2.0.3&format=json&longUrl=' . rawurlencode( $before_url ) . '&login=' . $user_id . '&apiKey=' . $api_key ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->results->short_url ) && !empty( $obj->results->short_url ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->results->short_url ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

ow.ly (Hootsuite)

Hootsuiteが提供する短縮URLの作成APIです。Twitterのタイムラインなどでよく見かける短縮URLですねー。

準備(APIキーの入手)

「My Account」をクリックする
「My Account」をクリックする

Ow.lyはHootsuiteが運営する短縮URLサービスです。利用するにはユーザー登録して、APIキーを入手する必要があります。まずはユーザーアカウントを作成し、「My Account」のページに移動して下さい。

「API Key」をクリックする
「API Key」をクリックする

上部メニュータブの「API Key」をクリックすると、自分のAPIキーを確認することができます。

短縮URLの作成方法

リクエスト方法

APIキーと元のURLアドレスでクエリーを構成し、エンドポイントにリクエストを送って下さい。

GET http://ow.ly/api/1.1/url/shorten?apiKey={APIキー}&longUrl={元のURLアドレス}

取得できるJSON

こちらがリクエスト成功時に取得できるJSONデータです。shortUrlプロパティに、短縮処理されたURLがあります。

JSON

{
	"results":{
		"hash":"3uCcmy",
		"longUrl":"http:\/\/syncer.jp\/how-to-make-shoten-url",
		"shortUrl":"http:\/\/ow.ly\/3uCcmy"
	}
}

サンプルプログラム

HootsuiteのAPIを使った短縮URL作成プログラムの例です。

PHP

<?php

	// APIキーの設定
	$api_key = '' ;

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) )
	{
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL , 'http://ow.ly/api/1.1/url/shorten?apiKey=' . $api_key . '&longUrl=' . rawurlencode( $before_url ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->results->shortUrl ) && !empty( $obj->results->shortUrl ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->results->shortUrl ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

ux.nu (ux.nu)

GEHRN(ゲヒルン)が提供する短縮URLの作成APIです。

短縮URLの作成方法

リクエスト方法

ux.nuの場合、事前にAPIキーの取得などが必要ありません。下記のエンドポイントに、urlプロパティに短縮したURLアドレスを付けて、リクエストを送って下さい。

GET http://ux.nu/api/short?url={元のURLアドレス}

取得できるJSON

リクエストに成功すると、JSONデータを取得することができます。urlプロパティの値が、目的の短縮URLです。

JSON

{
   "data":{
      "blacklist":"false",
      "malware":"false",
      "safe":"true",
      "id":"43J1o",
      "url":"http:\/\/ux.nu\/43J1o"
   },
   "new":"true",
   "status_code":"200"
}

サンプルプログラム

GEHRN(ゲヒルン)のAPIを使った短縮URL作成プログラムの例です。

PHP

<?php

	// 元のURL
	$before_url = 'https://syncer.jp/how-to-make-shoten-url' ;

	// GETメソッドで指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) ) {
		$before_url = $_GET['url'] ;
	}

	// cURLを利用してリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL , 'http://ux.nu/api/short?url=' . rawurlencode( $before_url ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;		// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;	// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// 取得したJSONをオブジェクトに変換
	$obj = json_decode( $json ) ;

	// URLを表示用に整形 (検証用)
	foreach( array( 'before_url', ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// HTML用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;

	// 成功時
	if( isset( $obj->data->url ) && !empty( $obj->data->url ) ) {
		// 取得した短縮URL
		$shorten_url = $obj->data->url ;

		// 出力
		$html .= '<dl>' ;
		$html .= 	'<dt>オリジナルURL</dt>' ;
		$html .= 		'<dd><a href="' . $before_url . '" target="_blank">' . $before_url . '</a></dd>' ;
		$html .= 	'<dt>短縮したURL</dt>' ;
		$html .= 		'<dd><a href="' . $shorten_url . '" target="_blank">' . $shorten_url . '</a></dd>' ;
		$html .= '</dl>' ;

	// 失敗時
	} else {
		$html .= '<p><mark>短縮URLを作成できませんでした…。</mark></p>';

	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// URLの入力
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" placeholder="https://syncer.jp" value="' . $before_url . '"></p>' ;
	$html .= 	'<p><button>SHORTEN !!</button></p>' ;
	$html .= '</form>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

ダウンロード

この記事で紹介した各サンプルプログラムを配布しています。よろしければ、あなたのウェブサイト制作にお役立て下さい。

ファイル一覧

SYNCER000180
google.php Download
bitly.php Download
isgd.php Download
vgd.php Download
tinycc.php Download
hootsuite.php Download
uxnu.php Download
readme.txt Download

ファイル名をクリックすると内容を確認できます。「Download Zip」をクリックするとファイル一式をダウンロードできます。

ご利用の際は、付属のREADMEファイル(readme.txt)をご確認下さい。

Download Zip