PHPのforeach文でyahoo!のカテゴリランキングを表示

このQ&Aのポイント
  • yahoo!のwebサービスを利用して、自サイトにカテゴリランキングを表示する方法を教えてください。
  • 現在、foreach文を使ってカテゴリランキングを表示しようとしていますが、表示件数を制限する方法が分かりません。
  • PC環境はWindowsXP PHP5です。PHP初心者なので、アドバイスをお願いします。
回答を見る
  • ベストアンサー

PHPのforeach文について

yahoo!のwebサービスを利用して、自サイトにランキング表示をしたいのですが、デフォルトで20件まで表示されてしまいます。 スペースの関係で3~5件程度までの表示にしたいのですが、方法がどうしても分かりません。 yahoo!カテゴリランキング http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/categoryranking.html (offsetのところに表示件数のことが書いてあります。) 現在、foreach文を使い、下記のソースで思案中です。 foreach($xml->Result->RankingData as $ranking){ $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; print <<< page <a href="{$url}" target="_blank"><img src="{$medium}"</a> <p><a href="{$url}" target="_blank">{$name}</a></p> <p>{$store}</p> page; ・ ・ ・ ループを任意の数で中断させるのかなとも思って、ネット上で調べてみましたが、for文やwhile文は出来るようですが、foreach文は載ってなくて困っています。 PHPもそれほど詳しくなく、サンプルを修正していく程度の知識しかありませんので、是非アドバイスを宜しくお願いします。 PC環境は WindowsXP PHP5 です。

noname#80189
noname#80189
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

<?php $mykey = "(略)"; //とりあえずallow_url_fopenはtrueにしてある。falseの時のやり方知らないので $xml = simplexml_load_file("http://shopping.yahooapis.jp/ShoppingWebService/V1/categoryRanking?appid=" . $mykey); //これが一番好み。名前空間が意識できるので。 //XPath式は配列の添字等と違って1から数えるので注意。 $xml->registerXPathNamespace ("y","urn:yahoo:jp:categoryRanking" ) ; foreach($xml->xpath("y:Result/y:RankingData[position() <= 5]") as $ranking){ $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; // PHP 6ではない場合はunicode stringへのキャストはしない print((unicode)$store[0]); print("\n"); } print ("-----------"); print("\n"); for($i = 0; $i < 5 ;$i++){ $ranking = $xml->Result->RankingData[$i]; $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; // PHP 6ではない場合はunicode stringへのキャストはしない print((unicode)$store[0]); print("\n"); } print ("-----------"); print("\n"); for($i = 0; $i < count($xml->Result->RankingData) ;$i++){ if ($i >= 5){ break; } $ranking = $xml->Result->RankingData[$i]; $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; // PHP 6ではない場合はunicode stringへのキャストはしない print((unicode)$store[0]); print("\n"); } print ("-----------"); print("\n"); $i = 0; foreach($xml->Result->RankingData as $ranking){ if ($i >= 5){ break; } $ranking = $xml->Result->RankingData[$i]; $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; // PHP 6ではない場合はunicode stringへのキャストはしない print((unicode)$store[0]); print("\n"); $i++; } ?>

noname#80189
質問者

お礼

himajin100000さん、回答ありがとうございます。 教えて頂いたもので上手くいきました。ありがとうございました。 ただ print((unicode)$store[0]); の部分で下記エラーが出たため4箇所削除して対応しました。問題ありでしょうか? Parse error: syntax error, unexpected T_VARIABLE 兎にも角にも、思うような表示が出来ましたので教えて頂いたソースを使わせていただきたいと思います。

関連するQ&A

  • phpについて~<div>;foreach

    PHP初心者です。<div>の中でforeachって使えるのですか? <?PHP require_once 'rss_fetch.inc'; $url = $td[SITEURL]; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = $item[title]; $title = mb_convert_encoding($title, "EUC-JP", "auto"); echo<<<__EOF__ <div class="dt"> <p class="dtTitle"> <a href="{$_SERVER["PHP_SELF"]}?id={$td["ID"]}&amp;url={$td["SITEURL"]}"> {$td["SITENAME"]} </a> {$listCt} {$flgImg} </p> <p class="dtCategory">コミュニティ:{$td["CATEGORY"]}{$FlgTag}</p> $NAME <p class="dtComment">{$img}{$td["COMMENT"]}</p> $ADMINCOMMENT <p class="dtDate">登録日:{$td["REGISTDATE"]}[<a href="regist.php?id={$td["ID"]}">編集</a>]</p> この部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ <?php foreach ($rss->items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "EUC-JP", "auto"); $url = $item[link]; $date = date("Y/m/d H:i:s", strtotime($item['dc']['date'])); ?> <p class="dtComment"> <li><a href=\"$url\">$title</a>$date</li></p> <?PHP } ?> </div> __EOF__; ?> このような書き方しか思いつかないのですが、 <div>~</div>の中でforeachの使い方を教えてください。

    • 締切済み
    • PHP
  • <A HREF="bg.php" target="_blank">の書き方、教えて

    <A HREF="bg.php" target="_blank"> ○これはok、新しいpageが開く <A HREF="bg.php?kaiin=114"> ○これもOK、kaiin=114 と値を持たせる  bg.phpでGET'kaiin'で使う <A HREF="bg.php?kaiin=114" target="_blank"> xフリーズする 何か解決策ありませんか OSはWindowXP Apache/2.0.45 PHP/5.0.1 です おねがいします

    • ベストアンサー
    • PHP
  • htmlからjavascript経由でのphp結果

    お世話になります。 htmlからjavascriptを介してphpを呼んでいます。 htmlでは以下のように呼んでいます。 <script type="text/javascript" src="../xxx.php" charset="utf-8"></script> html内のphpファイルをwebサーバ上で直接実行すると以下のように表示されます。 ----------------------------- document.write("<a href=http://xxx1 target=_blank>タイトル1</a><br>") document.write("<a href=http://xxx2 target=_blank>タイトル2</a><br>") document.write("<a href=http://xxx3 target=_blank>タイトル3</a><br>") document.write("<a href=http://xxx4 target=_blank>タイトル4</a><br>") ----------------------------- 出力した内容は表示できているので、phpコード的には問題ないと思うのですが htmlに出力されません。 他の箇所で同様の処理を行っていて、こちらはhtml上に表示されているので ちょっと苦戦しています。 ファイルもutf-8でbomなしにしています。 先輩方よろしくお願いします。

    • ベストアンサー
    • PHP
  • smartyのforeachの使い方

    仮に$strが以下のような配列を持っている場合smartyのtpl側で 出力させたいのですがうまくいきません。 Array ( [0] => Array ( [id] => 1 [name] => 名前 [sub_id] => Array ( [0] => 12 [1] => 13 ) [sub_name] => Array ( [0] => あああ [1] => いいい ) [sub_cnt] => Array ( [0] => 5 [1] => 5 ) ) [1] => Array ( [id] => 1 [name] => 名前 ) ) sub_***は配列が存在するものとしないものがあります。 そしてtpl側は {foreach item=items from=$str} <ul id="side{$items.id}"> {foreach item=item from=$items} <li><a href="index.php?id={$item.sub_id}">{$item.sub_name} ({$item.sub_cnt})</a></li> {/foreach} </ul> {/foreach} とforeachを重ねてみたのですがsub_***の値が表示されない 状態です。 複雑な配列なのですがこの場合どうすればうまく表示させれるの でしょうか?

    • ベストアンサー
    • PHP
  • iframeから別ページへの表示

    <li><a href="iexample_a.html" target="example1">上のフレームにサンプル1を表示</a></li> <li><a href="iexample_b.html" target="example1">上のフレームにサンプル2を表示</a></li> <p><iframe src="iexample_a.html" width="300" height="80" name="example1">代替内容</iframe></p> という形で、iframeを作って表示させたのですが、そのiframeの下にボタンか<a href="" "" target="_blank"で、そこをクリックすることで、その表示画面を別のページに表示させたいのですが、リストからiframe内に画像を表示させていて、<a href=" "の" "は空欄のままなので、うまく出来ません。 これはあきらめるしかないのでしょうか? それとも、リストのURLをどこかホームページ内に表示させることが出来るのでしょうか? リストによってつぎづぎに変わる画像を別ページで大きく表示させたいので、このような質問になりました。 初心者ですので、あまり難しいことは分かりませんが、教えていただける方、よろしくお願いいたします。

  • target="_blank"とは何の意味ですか??

    サイトのソースを見ていると、 <a href="URL" target="_blank"> というのをよく見かけます。 このtarget="_blank"というのは知らなかったのですが どういった効果があるのでしょうか??

    • ベストアンサー
    • HTML
  • フレーム内のリンク先を別ウィンドウに表示する

    お世話になります。 ページ内にフレーム領域を作りました。 フレーム内のリンクをクリックするとフレーム内で別ウィンドウが開きます。 <iframe src="aaaaaa.html"name="bbbbb"width="800"height="500"></iframe> 上の様に書きました。フレーム内のaaaaaa.html内のリンクをクリックするとフレーム内に別ウィンドウが開きます。 そうではなくて、_blankを使った様に別ウィンドウを開きたいのです。 <a href="aaaaaa.html内のURL"target="_blank" <iframe src="aaaaaa.html"name="bbbbb"width="800"height="500"></iframe> </a> <iframe src="aaaaaa.html"name="bbbbb"width="800"height="500"><a href="aaaaaa.html内のURL"target="_blank"</a></iframe> 上記の様にしても結果は同じでした。 RCCの知識が無いために、ページ内にブログのページを強引に表示しました。 よろしくお願いします。

  • スマホからのアクセスを強制的にPC版表示にしたい

    ホームページとかで <a href="URL" target="_blank">ココクリック</a> こうやってリンクに飛ばさせようとするんですが、 特定のサイトは飛んだあと勝手にスマホ版のURLに変換されて スマホ専用ページに飛んでしまいます。 スマホを操作している側が毎回PC版表示に切り替える操作をすればいいのですが それを理解しているユーザーは少ないです。 なのでこちらから強制的にPC版のURL表示にさせる htmlの書き方はありませんか?? <a href="URL" target="_blank">ココクリック</a> こういうのになんか書きたして出来ないもんですかね

  • 画像についてです

    <script src="http://source.pixiv.net/source/embed.js" data-id="25728559_ac859952bcd0bffc07c31478ff722a0e" data-size="large" data-border="on" charset="utf-8"></script><noscript><p><a href="http://www.pixiv.net/member_illust.php?mode=medium&amp;illust_id=25728559" target="_blank">バレンタイン女子</a> by <a href="http://www.pixiv.net/member.php?id=588720" target="_blank">88</a> on <a href="http://www.pixiv.net/" target="_blank">pixiv</a></p></noscript> 上にのっているような雰囲気の絵がとても好きなのですが どうやったら作成できるのでしょうか? パソコンのソフトか何かでしょうか? 知ってるいる方教えてください

  • phpでpreg_replaceで次のような条件の文字を置換したいのですが…

    <a href="jump?url= *1 " target="_blank"> *2 </a> というAタグになっている文字列を *2 だけのテキストにしたいと思っています。 preg_replaceでの正規表現での条件がわかりません…。

    • ベストアンサー
    • PHP

専門家に質問してみよう