いいねボタンの実数のみ表示させたい

このQ&Aのポイント
  • いいねボタンの実数だけをテキストでサイトに表示させたいのですが、例えば<http://graph.facebook.com/http://www.google.com/>と入力すると、sharesが2343084、commentsが165という数字が返ってきます。
  • これの165という数字だけを抜き出してサイトに自動的に表示させることは可能です。
  • いいねボタンが押されてこの数字が増えたらサイトの表示も増えるような形が希望です。
回答を見る
  • ベストアンサー

いいねボタンの実数のみ表示させたい

お世話になっています。 表記の件ですが、いいねボタンの実数だけをテキストでサイトに表示させたいのですが、 例えば<http://graph.facebook.com/http://www.google.com/>と入力すると以下のように表示されます。 { "id": "http://www.google.com/", "shares": 2343084, "comments": 165 } これの165という数字だけを抜き出してサイトに自動的に表示させることは可能でしょうか? いいねボタンが押されてこの数字が増えたらサイトの表示も増えるような形が希望です。 可能であればお教えいただけると嬉しいです。

  • PHP
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.4

allow_url_open が Off になっているんですね。。。 file_get_contents のかわりを考えてみます。 ■PEARライブラリの HTTP_Request 等が入っていれば使う error_reporting(E_ALL); // E_STRICT の警告抑止 require_once "HTTP/Request.php"; $req = new HTTP_Request('http://graph.facebook.com/http://www.google.com/'); $req->sendRequest(); $str = $req->getResponseBody(); ■ソケットを開いてHTTPの通信をやる function http_get_contents($url){ $body = ''; $response = ''; $parsed = parse_url($url); if($parsed){ if(isset($parsed['host']) && $parsed['host'] !== ''){ $host = $parsed['host']; $requestline = '/'; if(isset($parsed['path'])){ $requestline = $parsed['path']; } if(isset($parsed['query'])){ $requestline .= "?".$parsed['query']; } $fp = fsockopen($host, 80, $errno, $errstr, 30); if ($fp) { $req = "GET ".$requestline." HTTP/1.0\r\n"; $req .= "Host: ".$host."\r\n"; $req .= "\r\n"; fwrite($fp, $req); while (!feof($fp)) { $response .= fgets($fp, 1024); } fclose($fp); } list($header, $body) = explode("\r\n\r\n", $response, 2); } } return $body; } $str = http_get_contents("http://graph.facebook.com/http://www.google.com/"); 参考URL: http://okwave.jp/qa/q2112896.html

noshio
質問者

お礼

色々とありがとうございます! 実は未だに解決できていないのですが、大きなヒントを貰ったので頑張ってみます!

noshio
質問者

補足

追加ありがとうございます! やってみてご報告します!

その他の回答 (3)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

URL file-access is disabled が出るとしたら 俺の書いた方法ではダメですね。 file_get_contents() で URLを指定して読み込むのが許可されてないってことです。 php.ini いじって 許可してもらわないといけなくなります。 もしくは スクリプト内で ini_set() してみてください。 ini_set('allow_url_fopen' , "on"); ini_set('allow_url_include' , "on"); これでダメだった場合は、申し訳ないですが、俺の手には負えません。(´・ω・`)

noshio
質問者

お礼

迅速にアドバイス頂いてありがとうございます。 解決できていないのですが、試行錯誤してみます!

noshio
質問者

補足

ini_set()ダメでした。。。 ご丁寧にありがとうございます。勉強になります!

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.2

データフォーマットがJSON形式みたいなので、 PHPのJSONを扱うライブラリを使う手もありますね。 <?php $str = file_get_contents("http://graph.facebook.com/http://www.google.com/"); $decoded = json_decode($str); if(isset($decoded->comments)){ echo $decoded->comments . "\n"; }else{ // comments データが存在しない場合 echo 0 . "\n"; } ?> http://www.doyouphp.jp/sample/sample_xml_json.shtml http://php.net/manual/ja/function.json-decode.php それから、試してはいないのですがJavaScriptでデータを 取得する手段が用意されているようです。 http://blogs.itmedia.co.jp/naoto/2010/11/post-8d25.html http://www.h-fj.com/blog/archives/2011/01/20-172834.php

noshio
質問者

補足

ご回答ありがとうございます! 試してみます。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

いまいち、どこに どう表示したいのか分かりませんが、常に提示されたフォーマットで返ってくると仮定すれば、PHPで書くと以下のようになります。 <?php $filename = "http://graph.facebook.com/http://www.google.com/"; $str = file_get_contents($filename); // ごりごり書くと↓こんな感じ。 $str = str_replace(array("{" , "}") , "" , $str); $DimData = explode("," , $str); list($var , $num) = explode(":" , trim($DimData[2])); echo $num; // 本当は正規表現で一行で書けるけど、俺は正規表現理解していないので ここまでしか無理。 preg_match("/\"comments\"\:.*}/" , $str , $DimMatch); print_r($DimMatch); ?>

noshio
質問者

補足

早速にありがとうございます! 試してみたのですが、アップしたURLで見たら以下のエラーメッセージがページ内に表示されていました。 不勉強で恐縮なのですが、こちらの原因は分かりますでしょうか。 Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /home/★アカウント名★/public_html/new/index_iine.php on line 76 Warning: file_get_contents(http://graph.facebook.com/http://www.google.com/) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /home/★アカウント名★/public_html/new/index_iine.php on line 76 Array ( )

関連するQ&A

  • 懸賞サイトにおけるいいねボタン非表示の件

    https://www.facebook.com/crocos.present や https://apps.facebook.com/monipla/ などのサイトをよく利用するのですが、いつの間にか 懸賞へ応募する際に押下せねばならない「いいねボタン」が非表示になってしまい、押せません。 モニプラの場合は、「キャンペーンに参加する」ボタンは表示されています。 しかし、表示はされていますが、押しても無効なのです。 友達のタイムライン記事へのいいねは普通に押せるので、制限がかかったわけでもないと思うのですが… お詳しい方、ご回答いただけると助かります。 宜しくお願いします。

  • IE11でのボタン表示について

    IE11でのボタン表示について質問があります。 ほぼすべてのサイトで画像のようにボタン表記の左半分が欠けたようになってしまいます。 Google Choromeなど、他のブラウザを使用した場合は正常にボタンが表示されます。 また、完全にイメージで表示されているボタンは正常に表示されます。 通常のボタンをIE11でも正常に表示されるようにするにはどうしたらいいのでしょうか。 ご存知の方、ご教示ください。 ちなみに、アドオンなしのIE11でも同様の現象になります。

  • いいねボタンのコメント用ポップアップが消える

    こんにちは. HTML初心者です. Facebookのいいねボタンを設置したところ,正常に動作しないようなので質問させていただきます. 【症状】 ウェブページに設置したFacebookのいいねボタンを動作確認のためにボタンをクリックしたところ, 表示されるはずのコメント用ポップアップが一瞬表示された後,何も操作していないのにすぐに消えてしまい困っています. この時点ではいいねボタンのカウントは増えません. ポップアップが消えた後は,いいねボタンが「承認」という文字になり,クリックすると別ウィンドウで「「いいね!」を認証」というページのポップアップが現れ,「いいね!」または「キャンセル」を選べるようになります. ここで「いいね!」を押すとカウントは増えるのですが,コメントを書き込むことができません. コメントを書いた上でいいね!と押せるようにしたいのです. 【動作確認したパソコン】 Windows XP 【動作確認したブラウザ】 Google Chrome (バージョン 24.0.1312.57 m) Firefox (バージョン 16.0.2) 以下にソースコードの一部を示します. 埋め込みコードはFacebookコネクトのページ (http://developers.facebook.com/docs/reference/plugins/like/) から発行しました. HTML5で記述しています. (XFBMLでも試しましたが,同様の症状が出ました.) ======================================== 【HTMLタグ】 <html xmlns="http://www.w3.org/TR/xhtml1" lang="ja"> 【BODYタグ内】 <!-- Facebook共有ボタンスクリプトここから --> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <!-- Facebook共有ボタンスクリプトここまで --> <!-- Facebook共有ボタンここから --> <div class="fb-like" data-href="<!-- 表示させたいページのURL -->" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div> <!-- Facebook共有ボタンここまで --> ======================================== オブジェクトデバッガ(http://developers.facebook.com/tools/debug/og/object)で確認しても, 特にエラーや警告はありませんでした. コメント用ポップアップを正常に表示させるにはどのようにしたらよいでしょうか. iframe版は正常に動作することを確認済みです. iframe版のほうがIEでも表示できるなどのメリットがあり,そちらのほうが推奨されていますが, コメントも書き込めたほうがいいので,HTML5かXFBMLで設置したいと考えております. なにか足りない情報やご指摘がありましたらご連絡ください. よろしくお願いいたします.

  • facebookのコメント欄の返信ボタン

    facebookのコメント欄の返信ボタンについてお尋ねします。 facebookのコメント欄に返信ボタンが表示されている方が多くいます。 私のfacebookのコメント欄には返信ボタンが表示されていません。 どのようにしてfacebookのコメント欄に返信ボタンを表示させるのか教えてください。

  • ボタンを押すとテキストフィールドにテキスト表示

    キーボードのボタンシンボルを作り、ボタンを押すと用意してあるテキストフィールドに文字または数字が表示されるようにしたいのですが、どうしたらいいのでしょうか? textというインスタンス名のダイナミックテキストを準備し、ボタンに on (release) { _root.text = "あ"; } と記述しても上手くいきません。 ご伝授の程宜しくお願い致します。

  • Facebookのいいねボタンについて

    ホームページに、下記のサイトのサービスを利用して、Facebookのいいねボタンを設置しようと考えています。 【Like Button】 http://developers.facebook.com/docs/reference/plugins/like/ Facebookのいいねボタンの設置は無料ですか? 初歩的なことですいません。ご教授お願いします。

  • facebook いいねとコメントの表示について

    facebookについて質問です。 たとえば、いいね もしくは コメントを連続で3件した場合、 自分の友人のページには、私が行った3件のいいねorコメントが、 連続で表示されるのでしょうか? それとも、同じ人物だということで、省略されて1件だけ表示とかになるのでしょうか?

  • グーグル 「スタートページに表示する」のボタン

    グーグルのトップページって ヤフーのように 「スタートページに表示する」のボタンってないのでしょうか? https://www.google.com/webhp?hl=ja を見ても探せません。 自分でインターネットオプションで操作するしかないのですか?

  • いいねボタンが出てこない

    Facebookボタンを配置したのですが表示されません。 ページ内にFacebookのいいねボタンを下記のサンプルソースのように配置し、 サーバーにUPしましたが、4日経っても表示されません。 https://developers.facebook.com/docs/plugins/like-button 上記のページでいいねボタンを作成しました。 「URL to Like」にいいねボタンを設置したいページのURLを入力(静的URLです)し、 Widthは120を指定、Layoutはbutton_countを選択、Action Typeはlikeを選択、 「Show Friends' Faces」と「Include Share Button」はオフでコードを取得しました。 この取得したコードを、ツイッターのツイートボタンを横並び(ツイッターボタンは左に、いいねボタンは右)に表示されるよう、floatして配置しています。 色々と調べ倒しましたが、表示されない原因がわかりませんでした。 もう少し待てば表示されるものなのでしょうか? html5でコーディングし、htmlの文字コードはUTF-8で指定しています。 ページ内にいいねボタンがどうしても必要ですので、解決方法をご存知の方がおられましたら、ご教授いただけると大変ありがたいです。 <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>fbtest</title> <meta name="viewport" content="width=device-width,user-scalable=no"> <meta name="format-detection" content="telephone=no"> <meta name="description" content=""> <meta name="keywords" content=""> <link rel="stylesheet" href="common/css/normalize.css"> <link rel="stylesheet" href="common/css/style.css"> <link rel="stylesheet" href="common/css/style-s.css" media="only screen and (max-width:767px)"> <link rel="stylesheet" href="common/css/style-l.css" media="only screen and (min-width:768px)"> <style type="text/css"> div#social { clear: both; text-align:left; position:absolute; left: 0; top:30px; } div#tw { float: left; width:92px; } div#fb { float: left; width:120px; } div#fb .fb_iframe_widget > span { vertical-align: baseline !important; } </style> </head> <body> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.0"; js = d.createElement(s); js.id = id; js.async = true; }(document, 'script', 'facebook-jssdk'));</script> <div id="social" class="clr"> <div id="tw"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="www.sample.co.jp/site/" data-via="info_lvwellness" data-hashtags="サンプル">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </div> <div id="fb"> <div class="fb-like" data-href="http://www.sample.co.jp/site/sample.html" data-width="120" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div> </div> </div> </body> </html>

    • 締切済み
    • CSS
  • ニコ生のコメント機能に関して

    ニコ生のコメント機能に関して質問です。 (1)管理者さんからコメント主のIPアドレスは分かりますか? (2)コメントするとIDが付与されると思うのですが、そのID(例:12345)はその配信サイトでは日付がかわってもID:12345でずっと一定ですか? (3)匿名コメントにするをすると、ID:ki31am19d8のようにランダム数字が割り振られると思うのですが、この数字も日付が変わっても一定ですか? (4)自分のブラウザ(opera)からページを見ると「ユーザIDを確認」で1件1件コピーしないと見れないのですが、どのIDの人がどのコメントをしたか等一覧にユーザIDを表示することはできませんか? ちなみに自分は配信主ではありません。 どれかひとつふたつでも結構なので教えていただけると嬉しいです。

専門家に質問してみよう