<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Php%2FGoogleSearchApi</id>
	<title>Php/GoogleSearchApi - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Php%2FGoogleSearchApi"/>
	<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/GoogleSearchApi&amp;action=history"/>
	<updated>2026-04-29T21:21:36Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.nonip.net/index.php?title=Php/GoogleSearchApi&amp;diff=730&amp;oldid=prev</id>
		<title>127.0.0.1: ページの作成:「Ajax版のGoogleSearchApiを使えばphpからGoogle検索できる   // あまり使いすぎると403で以下メッセージが来る  Suspected Terms of Service Abuse...」</title>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/GoogleSearchApi&amp;diff=730&amp;oldid=prev"/>
		<updated>2015-05-19T18:16:24Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「Ajax版のGoogleSearchApiを使えばphpからGoogle検索できる   // あまり使いすぎると403で以下メッセージが来る  Suspected Terms of Service Abuse...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ajax版のGoogleSearchApiを使えばphpからGoogle検索できる&lt;br /&gt;
&lt;br /&gt;
 // あまり使いすぎると403で以下メッセージが来る&lt;br /&gt;
 Suspected Terms of Service Abuse. Please see http://code.google.com/apis/errors&lt;br /&gt;
&lt;br /&gt;
==ライブラリ＆サンプル==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 require_once &amp;#039;Zend/Http/Client.php&amp;#039;;&lt;br /&gt;
 /**&lt;br /&gt;
  * GoogleSearchApi&lt;br /&gt;
  *&lt;br /&gt;
  * @url http://wiki.nonip.info/work/index.php?php%2FGoogleSearchApi&lt;br /&gt;
  * @ex&lt;br /&gt;
  * // ウェブ検索&lt;br /&gt;
  * $google = GoogleSearchApi::factory();&lt;br /&gt;
  * $result = $google-&amp;gt;search(&amp;#039;Paris Hilton&amp;#039;);&lt;br /&gt;
  * if ($result-&amp;gt;responseStatus == 200) {&lt;br /&gt;
  *   foreach($result-&amp;gt;responseData-&amp;gt;results as $r) {&lt;br /&gt;
  *     echo var_dump($r);&lt;br /&gt;
  *   }&lt;br /&gt;
  * }&lt;br /&gt;
  * // 画像検索&lt;br /&gt;
  * $google = GoogleSearchApi::factory(&amp;#039;Image&amp;#039;);&lt;br /&gt;
  * $google-&amp;gt;setOption(&amp;#039;safe&amp;#039;, &amp;#039;active&amp;#039;);&lt;br /&gt;
  * $result = $google-&amp;gt;search(&amp;#039;Paris Hilton&amp;#039;, 2);&lt;br /&gt;
  * if ($result-&amp;gt;responseStatus == 200) {&lt;br /&gt;
  *   foreach($result-&amp;gt;responseData-&amp;gt;results as $r) {&lt;br /&gt;
  *     echo var_dump($r);&lt;br /&gt;
  *   }&lt;br /&gt;
  * }&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
 /**&lt;br /&gt;
  * Google検索&lt;br /&gt;
  */&lt;br /&gt;
 class GoogleSearchApi&lt;br /&gt;
 {&lt;br /&gt;
     public function __construct($type = null)&lt;br /&gt;
     {&lt;br /&gt;
         // 直接ins生成禁止&lt;br /&gt;
         if (!$type) {&lt;br /&gt;
             die(&amp;quot;error class GoogleSearchApi require factory() method&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     static public function factory($type = null)&lt;br /&gt;
     {&lt;br /&gt;
         switch($type) {&lt;br /&gt;
         case &amp;#039;image&amp;#039;:&lt;br /&gt;
             return new GoogleSearchApiImage($type);&lt;br /&gt;
             break;&lt;br /&gt;
         default:&lt;br /&gt;
             return new GoogleSearchApiWeb($type);&lt;br /&gt;
             break;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 /**&lt;br /&gt;
  * ウェブ検索&lt;br /&gt;
  */&lt;br /&gt;
 class GoogleSearchApiWeb extends GoogleSearchApiAbstruct&lt;br /&gt;
 {&lt;br /&gt;
     /**&lt;br /&gt;
      * constructor&lt;br /&gt;
      */&lt;br /&gt;
     public function __construct()&lt;br /&gt;
     {&lt;br /&gt;
         $this-&amp;gt;_api = &amp;#039;http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;#039;;&lt;br /&gt;
         parent::__construct();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 /**&lt;br /&gt;
  * 画像検索&lt;br /&gt;
  */&lt;br /&gt;
 class GoogleSearchApiImage extends GoogleSearchApiAbstruct&lt;br /&gt;
 {&lt;br /&gt;
     /**&lt;br /&gt;
      * constructor&lt;br /&gt;
      */&lt;br /&gt;
     public function __construct()&lt;br /&gt;
     {&lt;br /&gt;
         $this-&amp;gt;_api = &amp;#039;http://ajax.googleapis.com/ajax/services/search/images?v=1.0&amp;#039;;&lt;br /&gt;
         parent::__construct();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 /**&lt;br /&gt;
  * 基底検索&lt;br /&gt;
  */&lt;br /&gt;
 abstract class GoogleSearchApiAbstruct&lt;br /&gt;
 {&lt;br /&gt;
     protected $_api = &amp;#039;http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;#039;;&lt;br /&gt;
     protected $_options = array();&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * constructor&lt;br /&gt;
      */&lt;br /&gt;
     public function __construct()&lt;br /&gt;
     {&lt;br /&gt;
         // 詳細 http://code.google.com/intl/ja/apis/websearch/docs/reference.html#_intro_fonje&lt;br /&gt;
         $this-&amp;gt;_options = array(&lt;br /&gt;
             &amp;#039;hl&amp;#039; =&amp;gt; &amp;#039;ja&amp;#039;,&lt;br /&gt;
             &amp;#039;lr&amp;#039; =&amp;gt; &amp;#039;lang_ja&amp;#039;,&lt;br /&gt;
             &amp;#039;rsz&amp;#039; =&amp;gt; &amp;#039;large&amp;#039;,    // small(4件), large(8件)&lt;br /&gt;
             &amp;#039;safe&amp;#039; =&amp;gt; &amp;#039;off&amp;#039;,    // active, moderate, off(エロoff)&lt;br /&gt;
             &amp;#039;start&amp;#039; =&amp;gt; 0,        // 何番目から取得したいか 0~56&lt;br /&gt;
             // &amp;#039;filter&amp;#039; =&amp;gt; 0,    // 0, 1&lt;br /&gt;
         );&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * 検索&lt;br /&gt;
      *&lt;br /&gt;
      * @param  string $keyword&lt;br /&gt;
      * @param  int    $page&lt;br /&gt;
      * @return void&lt;br /&gt;
      */&lt;br /&gt;
     public function search($keyword, $page = 1)&lt;br /&gt;
     {&lt;br /&gt;
         if ($options) {&lt;br /&gt;
             $this-&amp;gt;_options = merge_array($this-&amp;gt;_options, $options);&lt;br /&gt;
         }&lt;br /&gt;
         $this-&amp;gt;setOption(&amp;#039;q&amp;#039;, $keyword);&lt;br /&gt;
         &lt;br /&gt;
         if ($page &amp;gt;= 2) {&lt;br /&gt;
             // ページ設定&lt;br /&gt;
             $this-&amp;gt;setPage($page);&lt;br /&gt;
         }&lt;br /&gt;
         // リクエスト処理実行&lt;br /&gt;
         $json = $this-&amp;gt;_requestExec($this-&amp;gt;_api, $this-&amp;gt;_options);&lt;br /&gt;
         &lt;br /&gt;
         return json_decode($json);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * オプション配列設定&lt;br /&gt;
      */&lt;br /&gt;
     public function setOptions($options)&lt;br /&gt;
     {&lt;br /&gt;
         $this-&amp;gt;_options = $options;&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * オプション設定&lt;br /&gt;
      */&lt;br /&gt;
     public function setOption($key, $option)&lt;br /&gt;
     {&lt;br /&gt;
         $this-&amp;gt;_options[$key] = $option;&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * ページ設定&lt;br /&gt;
      *&lt;br /&gt;
      * @param  int  $page&lt;br /&gt;
      * @return void&lt;br /&gt;
      */&lt;br /&gt;
     public function setPage($page = 1)&lt;br /&gt;
     {&lt;br /&gt;
         if ($page &amp;lt;= 1) return;&lt;br /&gt;
         // 何番目から検索するか設定&lt;br /&gt;
         $this-&amp;gt;_options[&amp;#039;start&amp;#039;] = $this-&amp;gt;_getRszNumber($this-&amp;gt;_options[&amp;#039;rsz&amp;#039;]) * $page;&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * リクエスト処理実行&lt;br /&gt;
      */&lt;br /&gt;
     private function _requestExec($url, $params)&lt;br /&gt;
     {&lt;br /&gt;
         // Zend_Http_Clientロード&lt;br /&gt;
         $client = new Zend_Http_Client();&lt;br /&gt;
         $client-&amp;gt;setUri($url);&lt;br /&gt;
         $client-&amp;gt;setConfig(array(&lt;br /&gt;
             &amp;#039;maxredirects&amp;#039; =&amp;gt; 0,&lt;br /&gt;
             &amp;#039;timeout&amp;#039;      =&amp;gt; 3&lt;br /&gt;
         ));&lt;br /&gt;
         // 複数のパラメータを一度に追加します&lt;br /&gt;
         $client-&amp;gt;setParameterGet($params);&lt;br /&gt;
         &lt;br /&gt;
         // GET リクエストを実行します&lt;br /&gt;
         $response = $client-&amp;gt;request();&lt;br /&gt;
         $ret = $response-&amp;gt;getBody();&lt;br /&gt;
         &lt;br /&gt;
         return $ret;&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * rsz数字取得&lt;br /&gt;
      *&lt;br /&gt;
      * @param  int  $rsz&lt;br /&gt;
      * @return void&lt;br /&gt;
      */&lt;br /&gt;
     private function _getRszNumber($rsz)&lt;br /&gt;
     {&lt;br /&gt;
         $rszNames = array(&lt;br /&gt;
             &amp;#039;large&amp;#039; =&amp;gt; 8,&lt;br /&gt;
             &amp;#039;small&amp;#039; =&amp;gt; 4,&lt;br /&gt;
         );&lt;br /&gt;
         // 数字でないとき&lt;br /&gt;
         if (!is_numeric($rsz)) {&lt;br /&gt;
             return $rszNames[$rsz];&lt;br /&gt;
         }&lt;br /&gt;
         return $rsz;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>