WEB API PROGRAMMING!

web creators 2009年8月号
WEB API PROGRAMMING!:サンプルデータ

<注意書き>
※Web APIの仕様が変更されたなどの理由により、記事と動作が異なる場合があります。あらかじめご了承ください。

●●●●●サンプルデータ1のタイトル

jalan API(1)

●●●●●サンプルデータ1

<?php
define('API_KEY', '取得したAPIキーを指定してください');
define('AREA_XML_FILE', 'エリアファイル名の場所を指定してください');

/**  * じゃらんWebサービスに接続する
 *
 * @param string  メソッド名
 * @param array   その他のリクエストオプション
 */
function request_jalan($uri, $options = array())
{
 $url = 'http://jws.jalan.net/' . $uri;
 $options['key'] = API_KEY;
 if ($options) {
  foreach ($options as $key => $val) {
   if ($val) {
    $str_params []= sprintf('%s=%s', $key, urlencode($val));
   }
  }
  $url = sprintf('%s?%s', $url, implode('&', $str_params));
 }

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch,
       CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
 $response = curl_exec($ch);
 $response = preg_replace('/<Results xmlns="jws">/', '<Results>', $response);
 curl_close($ch);
 $result = simplexml_load_string($response);
 if (! $result) {
  return false;
 }

 return $result;
}

/**
 * じゃらん宿検索APIに接続する
 *
 * @param array   その他のリクエストオプション
 */
function request_jalan_hotel($options = array())
{
 return request_jalan('APIAdvance/HotelSearch/V1/', $options);
}

// エリア情報を解析する
$area = array();
if (file_exists(AREA_XML_FILE)) {
 $area = @simplexml_load_file(AREA_XML_FILE);
}

$result = array();
if (isset($_GET['search'])) {
 unset($_GET['search']);
 $options = array();
 foreach ($_GET as $key => $val) {
  $options[$key] = $val;
 }
 $result = request_jalan_hotel($options);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>じゃらんWebサービスを使っていろいろな条件から日本中の宿を検索してみよう</title>
  <style text="text/css">
 table { border: 1px solid gray; border-collapse: collapse; margin: 15px; width: 200px; height: 400px; float: left; }
 table th, table td { border: 1px solid gray; text-align: center; }
   div.center { text-align: center; }
   .result { width: 250px; }
  </style>
 </head>

 <body style="text-align: center;">
  <h2>じゃらんWebサービスを使っていろいろな条件から日本中の宿を検索してみよう</h2>

  <p>エリア条件は必ずいずれかを選択して、「検索」ボタンをクリックしてください。</p>
  <form action="jalan.php" class="search">
   <?php if ($area): ?>
   広域エリア:
   <select name="reg">
   <option value="0">全国</option>
      <?php foreach ($area->Area->Region as $region): ?>
    <?php $selected = (isset($_GET['reg']) && $_GET['reg'] == $region['cd']) ? "selected" : "" ?>
    <option value="<?php echo $region['cd'] ?>" <?php echo $selected ?>>
     <?php echo $region['name'] ?>
    </option>
   <?php endforeach; ?>
   </select>
   都道府県エリア:
   <select name="pref">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
     <?php foreach ($region->Prefecture as $pref): ?>
    <?php $selected = (isset($_GET['pref']) && $_GET['pref'] == $pref['cd']) ? "selected" : "" ?>
    <option value="<?php echo $pref['cd'] ?>" <?php echo $selected ?>><?php echo $pref['name'] ?></option>
    <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   <br>
   大エリア:
   <select name="l_area">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
    <?php foreach ($region->Prefecture as $pref): ?>
     <?php foreach ($pref->LargeArea as $larea): ?>
    <?php $selected = (isset($_GET['l_area']) && $_GET['l_area'] == $larea['cd']) ? "selected" : "" ?>
    <option value="<?php echo $larea['cd'] ?>" <?php echo $selected ?>><?php echo $larea['name'] ?></option>
     <?php endforeach; ?>
    <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   小エリア:
   <select name="s_area">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
    <?php foreach ($region->Prefecture as $pref): ?>
     <?php foreach ($pref->LargeArea as $larea): ?>
      <?php foreach ($larea->SmallArea as $sarea): ?>
    <?php $selected = (isset($_GET['s_area']) && $_GET['s_area'] == $sarea['cd']) ? "selected" : "" ?>
    <option value="<?php echo $sarea['cd'] ?>" <?php echo $selected ?>><?php echo $sarea['name'] ?></option>
      <?php endforeach; ?>
     <?php endforeach; ?>
    <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   <?php endif; ?>
   <br><br>
   宿名:<input type="text" name="h_name" value="<?php echo isset($_GET['h_name']) ? $_GET['h_name'] : '' ?>">
   宿タイプ:<select name="h_type">
    <option value="0">絞込みなし</option>
    <option value="1">旅館</option>
    <option value="2">ペンション・民宿・ロッジ</option>
    <option value="3">貸し別荘・コンドミニアム</option>
    <option value="4">ホテル・ビジネスホテル</option>
    <option value="5">公共の宿</option>
   </select>
   <br>
   温泉の有無:<select name="onsen">
    <option value="0">絞り込みなし</option>
    <option value="1">絞り込む</option>
   </select>
   エステ設備の有無:<select name="esthe">
    <option value="0">絞り込みなし</option>
    <option value="1">絞り込む</option>
   </select>
   送迎の有無:<select name="limo">
    <option value="0">絞り込みなし</option>
    <option value="1">絞り込む</option>
   </select>
   インターネット設備の有無:<select name="net">
    <option value="0">絞り込みなし</option>
    <option value="1">絞り込む</option>
   </select>
   <br>
   <input type="submit" name="search" value="検索する">
  </form>

  <?php if ($result): ?>
  <?php foreach ($result->Hotel as $hotel): ?>
  <table class="result">
  <tr>
   <td><a href="<?php echo $hotel->HotelDetailURL ?>"><?php echo $hotel->HotelName ?></a></td>
  </tr>
  <tr>
   <td>〒<?php echo $hotel->PostCode ?> <?php echo $hotel->HotelAddress ?></td>
  </tr>
  <tr>
   <td><?php echo $hotel->HotelType ?></td>
  </tr>
  <tr>
   <td><?php echo $hotel->HotelCatchCopy ?></td>
  </tr>
  <tr>
   <td><img src="<?php echo $hotel->PictureURL ?>"><br><?php echo $hotel->PictureCaption ?></td>
  </tr>
  <tr>
   <td><?php echo $hotel->AccessInformation ?></td>
  </tr>
  </table>
  <?php endforeach; ?>
  <?php endif; ?>

  <br clear="both">
  <hr>
  <a href="http://jws.jalan.net/"><img src="http://jws.jalan.net/content/images/jws_88_50_blue.gif" alt="じゃらん Web サービス" title="じゃらん Web サービス" border="0"></a>
 </body>
</html>

●●●●●サンプルデータ2のタイトル

jalan_onsen API(2)

●●●●●サンプルデータ2

<?php
define('API_KEY', '取得したAPIキーを指定してください');
define('AREA_XML_FILE', 'エリアファイル名の場所を指定してください');

/**
 * じゃらんWebサービスに接続する
 *
 * @param string  メソッド名
 * @param array   その他のリクエストオプション
 */
function request_jalan($uri, $options = array())
{
 $url = 'http://jws.jalan.net/' . $uri;
 $options['key'] = API_KEY;
 if ($options) {
  foreach ($options as $key => $val) {
   if ($val) {
    $str_params []= sprintf('%s=%s', $key, urlencode($val));
   }
  }
  $url = sprintf('%s?%s', $url, implode('&', $str_params));
 }

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch,
      CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
 $response = curl_exec($ch);
 $response = preg_replace('/<Results xmlns="jws">/', '<Results>', $response);
 curl_close($ch);
 $result = simplexml_load_string($response);
 if (! $result) {
  return false;
 }

 return $result;
}

/**
 * じゃらん温泉検索APIに接続する
 *
 * @param array   その他のリクエストオプション
 */
function request_jalan_onsen($options = array())
{
 return request_jalan('APICommon/OnsenSearch/V1/', $options);
}

// エリア情報を解析する
$area = array();
if (file_exists(AREA_XML_FILE)) {
  $area = @simplexml_load_file(AREA_XML_FILE);
}

$result = array();
if (isset($_GET['search'])) {
 unset($_GET['search']);
 $options = array();
 foreach ($_GET as $key => $val) {
  $options[$key] = $val;
 }
 $result = request_jalan_onsen($options);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>じゃらんWebサービスを使っていろいろな条件から日本中の温泉を検索してみよう</title>
  <style text="text/css">
 table { border: 1px solid gray; border-collapse: collapse; margin: 15px; width: 200px; height: 400px; float: left; }
   table th, table td { border: 1px solid gray; text-align: center; }
   div.center { text-align: center; }
   .result { width: 250px; }
  </style>
 </head>

 <body style="text-align: center;">
  <h2>じゃらんWebサービスを使っていろいろな条件から日本中の温泉を検索してみよう</h2>

  <p>エリア条件は必ずいずれかを選択して、「検索」ボタンをクリックしてください。</p>
  <form action="jalan_onsen.php" class="search">
   <?php if ($area): ?>
   広域エリア:
   <select name="reg">
    <option value="0">全国</option>
   <?php foreach ($area->Area->Region as $region): ?>
    <?php $selected = (isset($_GET['reg']) && $_GET['reg'] == $region['cd']) ? "selected" : "" ?>
   <option value="<?php echo $region['cd'] ?>" <?php echo $selected ?>>
    <?php echo $region['name'] ?>
    </option>
   <?php endforeach; ?>
   </select>
   都道府県エリア:
   <select name="pref">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
     <?php foreach ($region->Prefecture as $pref): ?>
    <?php $selected = (isset($_GET['pref']) && $_GET['pref'] == $pref['cd']) ? "selected" : "" ?>
    <option value="<?php echo $pref['cd'] ?>" <?php echo $selected ?>><?php echo $pref['name'] ?></option>
    <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   <br>
   大エリア:
   <select name="l_area">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
    <?php foreach ($region->Prefecture as $pref): ?>
      <?php foreach ($pref->LargeArea as $larea): ?>
    <?php $selected = (isset($_GET['l_area']) && $_GET['l_area'] == $larea['cd']) ? "selected" : "" ?>
    <option value="<?php echo $larea['cd'] ?>" <?php echo $selected ?>><?php echo $larea['name'] ?></option>
     <?php endforeach; ?>
     <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   小エリア:
   <select name="s_area">
    <option value="0">選択なし</option>
   <?php foreach ($area->Area->Region as $region): ?>
    <?php foreach ($region->Prefecture as $pref): ?>
      <?php foreach ($pref->LargeArea as $larea): ?>
       <?php foreach ($larea->SmallArea as $sarea): ?>
    <?php $selected = (isset($_GET['s_area']) && $_GET['s_area'] == $sarea['cd']) ? "selected" : "" ?>
    <option value="<?php echo $sarea['cd'] ?>" <?php echo $selected ?>><?php echo $sarea['name'] ?></option>
       <?php endforeach; ?>
      <?php endforeach; ?>
     <?php endforeach; ?>
   <?php endforeach; ?>
   </select>
   <?php endif; ?>
   <br><br>
   泉質:<select name="onsen_q">
    <option value="0">絞り込まない</option>
    <option value="1">単純温泉</option>
    <option value="2">アルカリ単純泉</option>
    <option value="3">単純炭酸泉</option>
    <option value="4">弱アルカリ性低張性泉</option>
    <option value="5">中性低張性高温泉</option>
    <option value="6">塩化物泉</option>
    <option value="7">ナトリウム塩化物泉</option>
    <option value="8">炭酸水素塩泉</option>
    <option value="9">炭酸鉄泉</option>
    <option value="10">硫酸塩泉</option>
    <option value="11">二酸化炭素泉</option>
    <option value="12">含鉄泉</option>
    <option value="13">含銅一鉄泉</option>
    <option value="14">硫黄泉</option>
    <option value="15">酸性泉</option>
    <option value="16">含アルミニウム泉</option>
    <option value="17">放射能泉</option>
    <option value="18">鉱泉</option>
    <option value="99">その他</option>
   </select>
   <br>
   <input type="submit" name="search" value="検索する">
  </form>

  <?php if ($result): ?>
  <?php foreach ($result->Onsen as $onsen): ?>
  <table>
  <tr>
   <td><a href="<?php echo $onsen->OnsenAreaURL ?>"><?php echo $onsen->OnsenName ?></a></td>
  </tr>
  <tr>
   <td><?php echo $onsen->OnsenAddress ?></td>
  </tr>
  <tr>
   <td><?php echo $onsen->NatureOfOnsen ?></td>
  </tr>
  </table>
  <?php endforeach; ?>
  <?php endif; ?>

  <br clear="both">
  <hr>
  <a href="http://jws.jalan.net/"><img src="http://jws.jalan.net/content/images/jws_88_50_blue.gif" alt="じゃらん Web サービス" title="じゃらん Web サービス" border="0"></a>
  </body>
</html>

●●●●●

←BACK

Copyright (c) 2009 MdN Corporation  All rights reserved.