TwitterAPIを使って検索してみます。

MOTOOLOGUEさんを参考にしました。

  1. カスターマキー、アクセストークン等を取得してください。参考
  2. 受け取る値はjson形式なので「Jsphonをcodereposにアップロードしました。」を参考にしてJsphonをインストール。
  3. HTTP::Requestもpearでインストール
<?php
require_once("HTTP/Request.php");
require_once("Jsphon/Decoder.php");

	//URLエンコード RFC3986版
	function _rawurlencode($str)
	{
	    $str = rawurlencode($str);
	    $str = str_replace('+', ' ', $str);
	    $str = str_replace('%7E', '~', $str);
	    return $str;
	}

	//hash_hmac('sha1', $data, $key, true)の代わり
	function _hmacsha1($key, $data)
	{
	    $blocksize = 64;
	    $hashfunc = 'sha1';
	    if (strlen($key) > $blocksize) $key = pack('H*', $hashfunc($key));
	    $key = str_pad($key, $blocksize, chr(0x00));
	    $ipad = str_repeat(chr(0x36), $blocksize);
	    $opad = str_repeat(chr(0x5c), $blocksize);
	    $hmac = pack('H*', $hashfunc(($key^$opad). pack('H*', $hashfunc(($key^$ipad). $data))));
	    return $hmac;
	}
//投げる変数類設定
		$request_param = array(
          //〜search.json?q=検索語
		    'q' => 検索語,
		    'oauth_consumer_key' => カスタマーキー,
		    'oauth_nonce' => md5(uniqid(mt_rand(), TRUE)),
		    'oauth_signature_method' => 'HMAC-SHA1',
		    'oauth_token' => アクセストークン,
		    'oauth_timestamp' => time(),
		    'oauth_version'=> '1.0',
		);

		//変数名でソート
		$request_sorted = $request_param;
		ksort($request_sorted);

		//Sigunatureのベーステキストを作成
		$request_queries = array();
		foreach ($request_sorted as $k => $v) $request_queries[] = $k. '='._rawurlencode($v);
		$request_query = implode('&', $request_queries);

		//それぞれをURLエンコードして接続 この場合GET
		$twtr_signature_base  = "GET&";
		$twtr_signature_base .= _rawurlencode($request_uri). '&';
		$twtr_signature_base .= _rawurlencode($request_query);

		//Signatureの作成
		$twtr_keys = _rawurlencode(カスタマーシークレット). '&'. _rawurlencode(アクセスシークレット);
		$request_param['oauth_signature'] =base64_encode(_hmacsha1($twtr_keys,$twtr_signature_base));

		//HTTPヘッダーに追加するAuthorizationパラメータ作成
		$request_headers = array();
		foreach ($request_param as $k => $v) $request_headers[] = $k. '="'._rawurlencode($v). '"';
		unset($request_headers[0]); //最初に定義したパラメータリストからqのみ撤去
		$request_header = 'OAuth realm="'. $request_domain. '", '. implode(', ', $request_headers);


		$url = 'http://search.twitter.com/search.json';
		$request = &new HTTP_Request($url);
		$request->setMethod(HTTP_REQUEST_METHOD_GET);
		$request->addHeader('Authorization', $request_header);
		$request->addQueryString("q", 検索語) ;
		$request->sendRequest();
		$json = new Jsphon_Decoder();

		$respo = $json->decode($request->getResponseBody());