imgとfile_get_contentsの違い

このQ&Aのポイント
  • imgタグとfile_get_contents関数の違いを説明します
  • imgタグは指定されたURLの画像を表示するためのタグですが、file_get_contents関数は指定されたURLのコンテンツを取得するための関数です
  • imgタグはリダイレクトが発生した場合でも表示されますが、file_get_contents関数はリダイレクトせずにコンテンツを取得するため、アフィリも作動せず画像も表示されません
回答を見る
  • ベストアンサー

imgとfile_get_contentsの違い

こんにちは, 現在,アフィリの導入を考えています。 (e-clickというアフィリです) <img src="http://www.e-click.jp/jpn/app/?app=AJI+9999^~BDE+9999^~sikibetu=+99999999^~p=+9999"/> と書くように指定されていまして(9999は文字ベース) これだと, https://www.e-click.jp/image/clear.gifにリダイレクトされて, e-clickのアフィリでも認識しているようなのですが, phpで file_get_contents("http://www.e-click.jp/jpn/app /?app=AJI+9999^~BDE+9999^~sikibetu=+99999999^~p=+9999"); とすると,アフィリも作動せず,しかも空白のgif画像も表示されません。 1)imgタグの場合とfile_get_contentsでは送るheaderが違うのでしょうか? 2)get_file_contentsでうまく作動させるにはどうすれば良いのでしょうか? わかる方がいらっしゃいましたらよろしくお願い致します。

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

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

  • ベストアンサー
  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.1

この状況では、headerとは送信されるのではなく、受け取るものです。 HTMLのimgタグと phpのfile_get_contentsは根本的に意味合いが違います。 http://www.e-click.jp/jpn/app/?app=AJI+9999 が何をしているのかと言うと、推測ですが、 imgタグで画像を呼び出そうとするたびに、表示したことをカウントしたり、表示した端末やホストなどの情報を収集して、画像ファイルを返している。 と言えばわかりやすいですかね? file_get_contentsはマニュアルを見てもわかるように文字列を表示するものなので、 文字列を返していないので正しく表示はできません。 file_get_contentsを使うことは諦めて、何がしたいのか? 目的を書いていただけたらと思います。

参考URL:
http://php.net/manual/ja/function.file-get-contents.php

その他の回答 (1)

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

んー、そもそも file_get_contents() にパラメータ付きのURLってwarning とか出るんじゃないですかね・・?

関連するQ&A

  • file_get_contentsがうまくいかない

    echo $url2 = 'https://go.jp/servicef/112233'; echo $scrape2 = file_get_contents($url2); であれば上手くいきますが $aa = '112233'; echo $url2 = 'https://go.jp/servicef/'.$aa; echo $scrape2 = file_get_contents($url2); とした場合うまくいきません。原因わかる方いないでしょうか??

    • 締切済み
    • PHP
  • file_get_contentsについて

    file_get_contentsについて教えてください。 現在あるサイトを定期的にチェックし、特定の文字列が存在したら メールを送るというものを作っています。 そのサイトチェックの際にfile_get_contentsを使って、 サイトの中身をチェックしています。 $tmpPage = file_get_contents('~.cgi?aa=bbb'); 上記の用に記述して$tmpPage内の文字列をチェックすることで 実現できているのですが、本来このサイトは携帯向けのページのため ヘッダー情報を付加して下記のように記述しています。 $opts = array( 'http'=>array( 'method'=>'GET', 'header'=>'Host :www.XXXXX.jp' . PHP_EOL . 'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL . 'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp' ) ); $context = stream_context_create( $opts ); $tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context ); このように記述すると Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found とエラーが返ってきてしまいます。 アクセスするURLをYahooやGoogleにすると問題なく動いているので、 問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と なっているのがダメなのではないかと思っています。 アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を 付加する場合、file_get_contentsの使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • file_put_contentsで複数画像の取得

    自分のサーバー(myserver.com)上で「他サイトにある画像をダウンロードできるPHP」=【download.php】を組みました。 <?php $url = 'http://yoso.jp/qt6w8d.jpg'; $data = file_get_contents($url); file_put_contents('./image/photo_1.jpg',$data); ?> 上記では、http://yoso.jp/にある1つの画像をphoto_1.jpgとリネームして、myserver.com/image/ ディレクトリに画像ファイルとして収納できます。 **************************************************************** 次に、 1001.csv 1002.csv 1003.csv など複数のCSVファイルを作り、自分のサーバーのmyserver.com/csv_file/ ディレクトリに保管しました。 それぞれのCSVファイルの中には、yoso.jpにある画像のURLが、カンマ区切りで複数書かれています。 例【1001.csv】 中身 (yoso.jp にある 複数(今回3つ)の画像のURLが記載) http://yoso.jp/qt6w8d.jpg,http://yoso.jp/dve4k.jpg,http://yoso.jp/4m2fl3.jpg, 尚、このCSVファイルもスクレイピンクで自作しているため必要であれば ""で囲むように改良することも可能です。 "http://yoso.jp/qt6w8d.jpg","http://yoso.jp/dve4k.jpg","http://yoso.jp/4m2fl3.jpg", 上記のcsvファイルを用意した後、下記のような【get.php】を組みました。 <?php $id=$_SERVER['QUERY_STRING']; $csv_url = "http://myserver.com/csv_file/"; $csv_url .= $id ; $csv_url .= ".csv"; $file_jpg = file_get_contents( $csv_url ); echo $file_jpg; ?> この【get.php】は、http://myserver.com/get.php?id=1001 とクエリーでcsv名を指定すると、1001.csvにある画像URL(1001.csvの場合3つ)をPHP上に表示(echo)できます。 ************************************************************** やりたいこと 【download.php】と【get.php】に記載したソースと組み合わせて、csvファイルに書いてある複数の画像をすべてサーバーに取り込みたいです。 可能であればそれぞれの画像名をphoto_1.jpg photo_2.jpg photo_3.jpg のような形でリネームし保存できればと考えていますが、file_put_contentsにて、複数ファイル指定で動作させる方法がわかりません。 どのようにすればいいかご教示戴きたくお願いいたします。

    • ベストアンサー
    • PHP
  • IE6で動かないコンテンツ

    教えてください。 http://chikusa-eetoko.jp/ ホームページをアップしましたが IE6で div「field」内のコンテンツのみ、まるで positionプロパティをかけたように固定されて動きません。 --------------------- <div id="container"> <!-- コンテンツエリア --> <div id="page"> <div id="header"> <!-- コンテンツ -->・・・・・動く </div><!-- /#header --> <div id="field"> <div id="main"> <!-- コンテンツ -->・・・・・スライドしない </div><!-- /#main --> <div id="second"> <!-- コンテンツ -->・・・・・スライドしない </div><!-- /#second --> <div id="shot"> <!-- コンテンツ -->・・・・・スライドしない </div><!-- /#shot --> <div class="next"><a href="news/index.html"><img src="img/next-navy.gif" width="90" height="22" alt="次ページへ"></a></div>・・・・・動く </div><!-- /#field --> </div><!-- /#page --> </div><!-- /#container --> --------------------- ヘッダーと次へのボタンまでは field 内コンテンツの高さを保ったまま空でスライドします。 どうかご教授ください。よろしくお願いします

  • file_get_contentsでなにもとれない

    file_get_contentsでなにもとれない $url = 'http://xxxxxxxxxx'; $html = file_get_contents($url ); echo $html; とした時何も表示されません 他のサーバーに移植したらとれるのでインフラの問題だと思うのですが何が考えられますでしょうか。 iptablesで外部にポート80あけてもだめでした。 ちなみにうったコマンドは iptables -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT

    • ベストアンサー
    • PHP
  • file_get_contentsについて

    file_get_contents()で、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> を取得すると、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> (全く同じ文字列)を吐き出しますよね。 そして、それをechoすると、<?php ~ ?>はそのままHTML上に表示されます。 これを、PHPを実行して、 <time datetime="2010-02-19T23:40:10">2010-02-19T23:40:10</time> のように表示させるようにするには、どのようにするのが一般的なのでしょうか。 先人の皆さんの知恵をおかしください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • file_get_contentsを使えば

    簡易クローラー機能は作成できますか?? 具体的には、あるサイトの新しいリンクのみ取得し、リンク先で指定文を取得するみたいなものです。 無理であれば無理で良いです。

    • 締切済み
    • PHP
  • IEでimgが印刷できない

    IEでimgが印刷できません。 他の業者さんが作られたサイトの更新作業をしています。 サーバーからデータをダウンロードして、imgを張り替えて、文字化けを修正してアップしました。 imgはフォトショップで作成し、gif形式で18850バイトです。 プリンタはRICOH imajio Neo450白黒レーザーです。 ブラウザはIE6。 但しCanon PIXUS 850iカラーインクジェットだとimgは印刷できます。 アドレスは http://www.e-cando.jp/map02.html です。 プリンタの性能の問題でしょうか、だとしたらどうすればRICOH imajio Neo450でも印刷できるようになるのでしょうか。 地図なので印刷できないと困ります。 何かヒントのようなことでも結構ですので、ご存知の方助けてください、よろしくお願いします。

  • 同サーバー内のファイルの存在確認ができません

    ※説明の為相対パスで書かせていただきます。 ↓本ファイルの設置ディレクトリ /usr/local/apache/htdocs/admin/check.php $img="/home/monky/www/monky.jp/img/1.jpg"; $chk=(file_exists($img))?TRUE:FALSE; ↑とするとエラーがでました。 このPHPとIMGファイルは以下のように、 /usr/local/apache/htdocs/admin/check.php /home/monky/www/monky.jp/img/1.jpg 階層が全然違いますが、同サーバー内です。 fopenやfile_get_contentsなどURLで指定すれば存在確認ができたのですが、動作が遅すぎなので、なんとかfile_existsで行いたいです。 この場合はどうすればうまくいくのでしょうか??

    • ベストアンサー
    • PHP
  • CGIが、aタグで呼ばれたか、imgタグでか区別するには?

    php内で、標記を切り分けて、 imgタグなら?指定に従った画像を、aタグなら?指定に従ってHtmlを出したいのです。 (imgタグの方が主機能です。Htmlにはリンクを入れる必要があるので、  imgに統一できません) 常に  header('Content-Type: image/gif'); でよいように思えますが、?以降を間違えられた時、 クリックすると、メチャメチャな画面が出てしまいます。 $_SERVERを、Googleって見ましたが、わかりません。 ご教授お願いします。 尚、切り分けた後は、($callで判定できるとすると) if ($call == "img"){  header('Content-Type: image/gif');    :   (Img作成の処理)    : }else if ($call == "a" || GETやPOST){  header("Content-Type: text/html; charset=SJIS");    :   (Html作成の処理)    : とするつもりです。 そもそも、何をしたいかというと、 ?以降にLaTeXの数式を書けば、(mimeTexを呼んで)イメージを返したい のです。 だいたいは、出来ています。 http://blogs.yahoo.co.jp/kafukanoochan/62474900.html

    • ベストアンサー
    • PHP

専門家に質問してみよう