• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:いいねボタンの実数のみ表示させたい)

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

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

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

  • ベストアンサー
  • 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 ( )