目次
PHPで「Yahoo!のテキスト解析/ルビ振りAPI」を使うサンプル
Yahoo!デベロッパーネットワークの、ルビ振りAPIのサンプルコードページには、Pythonの例が掲載されています。
このAPIは、例えば「漢字のふりがなを取得する」という文字列を与えれば、以下のようなJSONデータを取得できるものです。
{"id":"1234-1","jsonrpc":"2.0","result":{"word":[{"furigana":"かんじ","roman":"kanzi","surface":"漢字"},{"surface":"の"},{"surface":"ふりがな"},{"surface":"を"},{"furigana":"しゅとく","roman":"syutoku","surface":"取得"},{"surface":"する"}]}}
これを使うPHPのサンプルを作成してみます。
WebApiをPOSTするクラスの作成
Yahoo!のAPIは、パラメータをJSON形式にしてPOSTして使います。
file_get_contents 関数のほうが簡単ですが、くそ重いのでやめときます。
他のAPIと使いまわしできるように、簡単なクラスを作ります。
class PostApiClass { protected $body_response; protected $header_response; protected $status_code; public function __construct( $url, $header_array, $params) { $curl = curl_init($url); $options = array( CURLOPT_HTTPHEADER =>$header_array, CURLOPT_POST => true, // POST CURLOPT_POSTFIELDS => $params, // body CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => true, ); curl_setopt_array($curl, $options); $response = curl_exec($curl); $this->status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); // header切出 $this->header_response = array_filter(explode("\r\n",$header)); $this->body_response = substr($response, $header_size); // body切出 curl_close($curl); } public function get_body_response(){ return $this->body_response; } public function get_header_response(){ return $this->header_response; } public function get_status_code(){ return $this->status_code; } }
特別なことはやっていません。
cURLを使ってJSONをPOSTしてレスポンスを受け取っています。
Yahoo!のAPIを利用するために必要な情報は、「$url, $header_array, $params」の3つの変数にすべて格納されている想定です。
作成したクラスを使いYahoo!のルビ振りAPIを利用する
$url, $header_array, $paramsの3つの変数に、必要な情報を格納して、上記のクラスを呼び出すコードです。
require "class_webapi.php"; $appid = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; $url = "https://jlp.yahooapis.jp/FuriganaService/V2/furigana"; $param_array = array( "id" => "1234-1", "jsonrpc" => "2.0", "method" => "jlp.furiganaservice.furigana", "params" => array( "q" => "漢字のふりがなを取得する", "grade" => 1 ) ); $params = json_encode($param_array); $header = array( "Content-Length: ".strlen($params), "Accept: application/json", "Content-Type: application/json", "User-Agent: Yahoo AppID: ".$appid, ); $apicl = new PostApiClass($url,$header,$params); if($apicl->get_status_code() == "200"){ print_r($apicl->get_body_response()); }
横着して、変換対象の文字列もソースに直書きしてますが、ご容赦ください。
アプリケーションIDはへだーの「"User-Agent: Yahoo AppID: ".」にセットしています。
注意:実行には、アプリケーションIDが必要です
上記のコードの「$appid = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";」の部分にセットするアプリケーションIDを取得しておく必要があります。
とりあえず、以下に従って手続きしてください。
個人で試すだけなら、気軽に登録できるみたいです。
僕が登録しているうちの、いちばん最初のはこんなんでした。
ではでは。