APIで1件の検索結果を取得する方法とは?

このQ&Aのポイント
  • APIを使用して、1件の検索結果を取得する方法について教えてください。
  • 「Simple API」のWikipedia APIを利用する方法について説明します。
  • Wikipedia APIを使用するためのサンプルコードを紹介します。
回答を見る
  • ベストアンサー

APIで検索結果を1件だけ取得する方法を教えてください

日曜プログラマーのため、プログラミング知識が乏しいのですが質問させてください。 「Simple API」というサイトのWikipedia APIのサービスを利用しようと考えているのですが、 サイト上で紹介されているPHPサンプルですと、キーワードによっては複数件の結果を取得してしまいます。 --------以下サンプル------- <?php // キーワード指定 $keyword = "東京"; // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // データを取得 $data = file_get_contents($url) ; // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); // 配列をforeachで表示するデモ print "<H1>Wikipedia情報</H1>"; foreach ($array as $key => $value) { print "<a href=\"".$value[url]."\"><strong>".$value[title]."</strong></a>\n<br/>". $value[body] ."<hr/>\n\n"; } ?> ------------------ 私のやりたいこととしては、検索キーワードに対して1件目の結果のみ表示させたいのですが、うまいやり方がわからず困っています。 (データ取得自体は1件のみでも複数件でも構わないのですが、表示は1件目のみさせたいです) どなたか1件目の結果のみ表示されるサンプルコードをご教授願えませんでしょうか。 よろしくお願いいたします。 【SimpleAPI vol.3 - Wikipedia API】 http://wikipedia.simpleapi.net/

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • koke29
  • ベストアンサー率58% (114/196)
回答No.1

foreachの部分を for($i=0; $i<1; $i++){ print "<a href=\"".$array[$i][url]."\"><strong>".$array[$i][title]."</strong></a>\n<br/>". $array[$i][body] ."<hr/>\n\n"; } にしたら一件だけ表示に出来ました

raice2217
質問者

お礼

ご回答いただきましてありがとうございました m(_ _)m 「for($i=0; $i<1; $i++)」の部分までは予測が出来たのですが、「$value[・・・]」の部分を何に変換すればいいのかがわからず困っておりましたが、おかげで助かりました!!

関連するQ&A

  • WikipediaのPHPによるAPIについて

    http://wikipedia.simpleapi.net/ にサンプルが出ていて、それを利用しようと思っています。 --以下サンプル <?php // キーワード指定 $keyword = "多田富雄"; // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // データを取得 $data = file_get_contents($url) ; // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); // 配列をforeachで表示するデモ print "<H1>Wikipedia情報</H1>"; foreach ($array as $key => $value) { print "<a href=\"".$value[url]."\"><strong>".$value[title]."</strong></a>\n<br/>". $value[body] ."<hr/>\n\n"; } ?> --サンプル以上 実際のwikipediaで"多田富雄"を入力し調べた時と、上記サンプルを起動してprintした時では内容が異なります。 (上記サンプルの方がかなり少ない) unserialize関数もしくはfile_get_contents関数か、別の要因かよくわかりません。 ご経験のおありの方、ヒントだけでもいただけると助かります。 なお、私のphp経験は50-100時間程度、環境はXP,Apache2,php5です。

    • ベストアンサー
    • PHP
  • PHPで配列を使ってHTMLソースを取得したいです

    RSSで取得したXMLの中身からURLを取得したのですが、 それぞれのソースをループ構文を使って取得する方法はありますか? XMLの中身を配列として表示すると ソース↓ $RSS_data = simplexml_load_file($RSS_url); $i=0; foreach($RSS_data->URL as $value){ $result [$i] ['URL'] = $value->URL; $i++; } echo "<pre>" ; print_r($result) ; echo "</pre>" ; 結果↓ Array ( [0] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [1] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www~ ) ) [2] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [3] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) こんな感じで続いていきます。 このURLの一つ一つのソースを取得したいのですがどうすればいいのでしょうか?

    • 締切済み
    • PHP
  • APIで取得した情報の「次ページ」

    仕事で最近PHPの勉強をはじめ、将来的にはAPIを活用したサイトを作りたいのですが、次ページの表示の仕方がわかりません。 「次ページへ」 「前ページへ 次ページへ」 と表示したいのですがどのようにすれば、次ページや前ページを表示できるのでしょうか?? APIは価格comの商品検索です。 http://apiblog.kakaku.com/KakakuItemSearchV1.0.html プログラムの内容は、簡単に書きますが +++++++++++++++++++++++++++++++++++ $keyword = $_GET['Keyword']; $url = "​http://api.kakaku.com/Ver1/ItemSearch.asp?Keyword=".$keyword."CategoryGroup=pc&ResultSet=medium&SortOrder=pricerank&PageNum=1"; $a = simplexml_load_file($url) or die("XMLパースエラー"); echo "検索結果".$a->NumOfResult."件"; foreach ($a->Item as $b){ echo "製品名".$b->ProductName ; } +++++++++++++++++++++++++++++++++++ です。 これで最初の5件は表示されるのですが、ここから「次ページ」「前ページ」のリンクを出すにはどのようにするのでしょうか? ご返答よろしくお願いします。

    • 締切済み
    • PHP
  • wikipediaのAPIの取り込みについて

    wikipediaのAPIを取り込みたいと思っています。 以下のURLをIE6から叩けば、「東京ドーム」に関するwikipediaの情報がxmlの形式で表示されるのですが、 http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/%e6%9d%b1%e4%ba%ac%e3%83%89%e3%83%bc%e3%83%a0 これを、 use LWP::Simple; $url = "http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/%E3%83%8A%E3%82%B9%E3%82%AB%E3%81%AE%E5%9C%B0%E4%B8%8A%E7%B5%B5"; $res = get($url); print $res; exit; としても、取得できません。 どなたか、このwikipediaのURLから情報をperlで取得する方法を教えていただけませんか。お願いします。 #なお、perl初心者です。 #サンプルコードを試行錯誤で書き換えしながら先に進むタイプです。 ちなみに、SimpleAPI(http://wikipedia.simpleapi.net/)による「東京ドーム」の取得は出来るのですが、 #上記コードの$urlを"http://wikipedia.simpleapi.net/api?keyword=%E6%9D%B1%E4%BA%AC%E3%83%89%E3%83%BC%E3%83%A0&output=xml"にする。 この場合、ダイジェスト文だけで全文は取得できません。 無謀かもしれませんが、全文を取得したく、前者のURLからの取得を望んでいます。 どうかよろしくお願いします。

  • 配列型の宣言?

    こんにちは。 あるサイトで見たphpのサンプルなのですが、 postされた全ての値を配列に格納するもので、以下のような記述がありました。 foreach((array)$_POST as $key => $value){  $array[$key] = $value; } ポストされた全ての値を、配列$arrayに連想配列として格納しているのはわかるのですが、 foreachの、(array)というのはどういう働きをするものなのでしょうか。 これは、$_POSTが配列であるという宣言でしょうか。 それと、postされた値がない場合、$_POSTを配列だと宣言しておくことで、foreachのエラーを回避するような役割もあるのでしょうか。 恥ずかしながら、(array)のような記述をphpではあまり見ないような気がするのですが、なんというキーワード(?)で勉強すれば理解が深められるかもご教授頂けますと助かります。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • HTTP_Request2で検索結果を取得したい

    pearのHTTP_Request2を使ってサイト内の検索結果を取得したいのですが、 どうにもうまく取得できなくて困っております。 ■やりたいこと 対象サイトをクックパッドにしたいと思います。 http://cookpad.com/search 料理名、食材名のフリーワードのところに例えばキムチと 入力して、その検索結果を表示したい(http://cookpad.com/search/%E3%82%AD%E3%83%A0%E3%83%81)と思っているのですが、リクエストがうまくいかず、上記URLのページがそのまま返ってきてしまいます。ソースは以下です。 <?php require_once "HTTP/Request2.php"; require_once "Net/URL2.php"; $request = new HTTP_Request2('http://cookpad.com/search', HTTP_Request2::METHOD_GET, array('use_brackets' => true)); $url = $request->getUrl(); $url->setQueryVariables(array( 'keyword' => 'キムチ' )); $url->setQueryVariable('commit', 'レシピ検索'); echo $request->send()->getBody(); 一体、どこが間違っているのでしょうか? 下記URLを参照して試みたのですが、どうにもうまくいきません。 お手数ですが、ご教授いただけますと幸いです。 参照ページ http://pear.php.net/manual/ja/package.http.http-request2.request.php

    • ベストアンサー
    • PHP
  • 検索結果をgoogleのように数件ずつ表示

    データベース初心者で申し訳ないのですが、質問失礼いたします。 googleのような検索結果ページで、検索結果を3件ずつ表示し、改ページ(?)をさせたいと思っております。 【web表示例】 1ページ目 3件表示/20件中表示 +------+------+---+ | name | anime | age | +------+------+---+ | サザエ | サザエさん | 24 | | マスオ | サザエさん | 29 | | タラオ | サザエさん | 3 | +------+------+---+ 1234567 //ページ数へのリンクですが、現在表示されている「1」にはリンクをさせません ※あらかじめLIMITで1~3件、4~6件を表示させるというページを作っているやり方でなく、  検索結果を自動で1ページ、2ページと振り分けてくれるものと考えています。 現在作成しておりますPHP部を、抽出条件など省いてはおりますが下記に表記させていただきました。 <?php //データベース接続 省略・・・ //検索ワードを取得 $keyword = $_POST['keyword']; $sql = "SELECT * FROM TABLE1 WHERE '%".$keyword."%' ORDER BY age "; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row["name"]."</td><td>".$row["anime"]."</td><td>".$row["age"]."</td>"; $tempHtml .= "</tr>\n"; } $msg = $rows."件のデータがあります。"; }else{ $msg = "データがありません。"; } mysql_free_result($result); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <?= $msg ?> <table> <?= $tempHtml ?> </table> </body> </html> 他HTMLで検索したあと、上記1ページで検索結果を表示しています。 ○件ずつ表示・・・というのは、難しいと調べている時にありましたが、 もっと理解してからでないととは思ったのですが必要となり自分なりに調べて試したものだけでは解決にならず質問の方させていただきました。 が、やはり初心者には難しいでしょうか?? ちなみに、調べていて「CGIで・・・」というものも多かったのですが、 検索ページがPHP+MySQLで作られているので、同じものでと考えています。 今使用しているものがPHP+MySQLなので、こちらでできればと思っております。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Wikipedia APIの結果からタイトルやURL、本文のダイジェスト(body)を抜き出すには?

    http://wikipedia.simpleapi.net/api?keyword=Google&output=json&callback=receive" 上記のURIをたたくと、 receive([{"language":"ja","id"・・・・・・ でスタートする結果が返ってきます。その結果からタイトルやURL、本文のダイジェスト(body)を抜き出すにはどのようにしたら良いのでしょうか? function receive(result){ が呼び出されるとすると、結果はresultに入りますよね? 結果からタイトルやURL、本文のダイジェスト(body)を取り出したいのです。 result.urlとしてみたり、[]があるので、配列なのかなと思い、result.[0]などを試してみました。 JSON形式の理想配列などを使っているのですかね?? よくわからず困っています。 試してみたプログラムを載せておきます。 //受信 function receive(result){ var s=""; //URL・タイトル・概要 s+= "<p>"+ result.url+ "<br>"+ result.title+ "<br>"+ result.body+ "</p>"; } //結果の表示 document.getElementById("display").innerHTML=s; }

  • 配列のX件目~Y件目を全件ループ以外に取得できますか?

    配列のX件目~Y件目を取得するもっと良い方法がもしあれば教えていただきたいです。 今のところ以下で考えています。 <?php $array = Array(1,2,3,4,5); $count = 0;$x = 3;$y = 5; foreach($array as $key >= $val){ if($count >= $x && $count <= $y) $new_array[] = $val; $count++; } ?>

    • ベストアンサー
    • PHP
  • PHPでHTMLソースを取得する方法はありますか?

    PHPでHTMLソースを取得する方法はありますか? RSSで複数のHTMLソースを取得しました。 以下のことをやりたいのですが、こういったことは可能でしょうか? ・複数のHTMLソースを取得する(同じサイトからなのでタグの種類も大体同じものです) ・その中から<data>タグを取得する(dataの中にはそれぞれ適当な数字が入っています) ・それをソートして、ソート順にURLを表示する。 このようなことは可能でしょうか? $RSS=RSSのURL(XML) foreach($RSS as $value){ $URL[]=$value->URL; } for ($i = 0, $n = count($URL); $i < $n; $i++) { echo $URL[$i] . "<br />"; } これでそれぞれのURLが URL1 URL2 URL3 とそれぞれ表示されます。これらのURLからそれぞれの<data>タグを取得して上のようなことをやりたいです。 説明が下手で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう