Seo tools

Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();



  • Categories

  • Ranking

  • Comments

  • Others


  • Yahoo API を使うクラス? for php

    最近Yahoo  や Technorati のAPIを使いまくってます。

    それようにクラスを作ったので、公開してみます。
    (一番下に張っておきます。)

    使い方

    とりあえず パラメータを作成します。
    といっても引数名のキーで引数の値を入れた配列をいれればOKです。

    Technorati でも Yahoo でも使えますが、
    とりあえずYahooだと

      $params['appid'] = “id”;
      $params['query'] = $_POST['keywords'];
      $params['results'] = “100″;
      $params['start'] = “1″;

    こんなかんじです。

    appid(Yahooで必要なんで)が id で
    query(YahooSearchのクエリー)が $_POST['keyword']で
    結果数は100開始行は1
    という設定です。

    Techonrati なら

      $params['language'] = ‘en’;
      $params['query'] = $_POST['keywords'];
      $params['limit'] = 100;
      $params['authority'] = ‘a7′;

    こんなかんじです。

      $UseApi = new UseApi($params,’http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?’);
      print_r $UseApi->apiData;

    作った配列とAPIのURLを引数にクラスを生成すると
    $UseApi->apiData にデータ(Array)がくるので
    それを上手くつかってください。

    Yahoo Technorati にかぎらずRESTなAPIなら
    大抵上手くいくとおもいます。

    なお本クラスは
    PHPテクメモさんのものを使わせてもらっています。
    *問題があったら消しますので。。

    以下丸コピしてはっつけてください。
    もしくはこちらからダウンロード
    UseApi.zip

    /*
    Using API Class
    ex.
      $params['appid'] = “id”;
      $params['query'] = $_POST['keywords'];
      $params['results'] = “100″;
      $params['start'] = “1″;

      $UseYahooApi = new UseYahooApi($params,’http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?’);
      print_r $UseYahooApi->apiData;
    */
    Class UseApi{

      var $requestUrl;
      var $params;
      var $apiData;
      
    /*
    Inputs
      1:Request Parameter Array
      2:Request Service Main URL

    Outputs
      return true
      return data in $apiData
      
    */
      function UseApi($params=null,$url=”){
        foreach($params as $key => $value){
          $this->params .= $key.”=”.rawurlencode($value).”&”;
        }
        $this->requestUrl = $url.$this->params;
        
        $xmlData = file_get_contents($this->requestUrl);
        $XmlToArray = new XmlToArray($xmlData);
        $this->apiData = $XmlToArray->createArray();
        return true;
      }
    }
    /*
    Xml Exchanges to Array
    */
    Class XmlToArray
    {
      var $xml=”;

      function XmlToArray($xml)
      {
       $this->xml = $xml;
      }

      function _struct_to_array($values, &$i)
      {
        $child = array();
        if (isset($values[$i]['value'])) array_push($child, $values[$i]['value']);
        
        while ($i++ < count($values)) {
          switch ($values[$i]['type']) {
            case 'cdata':
               array_push($child, $values[$i]['value']);
              break;
            case 'complete':
              $name = $values[$i]['tag'];
              if(!empty($name)){
                $child[$name]= ($values[$i]['value'])?($values[$i]['value']):'';
                if(isset($values[$i]['attributes'])) {
                  $child[$name] = $values[$i]['attributes'];
                }
              }
              break;
            
            case 'open':
              $name = $values[$i]['tag'];
              $size = isset($child[$name]) ? sizeof($child[$name]) : 0;
              $child[$name][$size] = $this->_struct_to_array($values, $i);
              break;
            case ‘close’:
              return $child;
              break;
          }
        }
        return $child;
      }

      function createArray($targetEncoding=”,$sourceEncoding=”,$caseFolding=0,$skipWhite=1,$skipTagStart=0)
      {
        $xml = $this->xml;
        $values = array();
        $index = array();
        $created= array();
        $parser = xml_parser_create($sourceEncoding);
        if($targetEncoding && $sourceEncoding!=$targetEncoding) xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $targetEncoding);
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, $caseFolding);
        xml_parser_set_option($parser, XML_OPTION_SKIP_TAGSTART, $skipTagStart);
        xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, $skipWhite);
        xml_parse_into_struct($parser, $xml, $values, $index);
        xml_parser_free($parser);
        return $values;
      }
    }


    Leave a Reply

    2008/11/22 07:32:11