- ベストアンサー
- 暇なときにでも
「include」と「file_get_contents」の違いがよく
「include」と「file_get_contents」の違いがよく分かりません。 ネットで調べてみました。 ・「include」… 指定したファイルを読み込んで評価 ・「file_get_contents」… 指定したファイルの内容を全て読み込んで文字列として返す で、実際に試してみたのですが、「file_get_contents」の方がよく分かりません。 具体的には、下記を試すと、結果が、tt string(44) "" となるのですが、ttって何ですか? 評価をしないで文字列として返したということでしょうか? それでなんで tt になるのでしょうか? ▼hoge.php <?php $s = file_get_contents("test1.php"); var_dump($s); ?> ▼test1.php <?php echo ("1どうなるのかな"); ?>
- re999
- お礼率61% (476/777)
- PHP
- 回答数2
- ありがとう数7
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
- 回答No.2
- yyr446
- ベストアンサー率65% (870/1330)
include()はPHPの制御構文で、読み込んだファイルを評価して 実行します。当然テキストファイルでないとだめです。 用途としては、共通のソースとか、動的に生成するソースを組み込むのに 使う事が多いです。 file_get_contents()はPHPの外部関数で、ファイルを読み込みます。 画像ファイルとか、Acrobat pdfファイルのようなバイナリーファイルも 読み込めます。(文字列として読み込まれます) hoge.phpで <?php header("Content-type:image/jpeg"); print file_get_contents(hoge.jpg); ?> とすれば、 <img src="hoge.php"> なんて事もできます。 両方とも、ini設定で許されていれば、ファイル名をURL指定して、 HTTP経由で読み込むことも出来ます。
その他の回答 (1)
- 回答No.1
- cotae_bb
- ベストアンサー率53% (51/95)
※ PHPほとんどやったことないのでにわかな知識です。 ※ include の場合読み込んだファイルに書いてあることがそのままincludeした場所に埋め込まれると考えると良いかもしれません。 ▼hoge.php <?php $test = 'HellowWorld!!'; ?> ▼test1.php <?php echo("TEST=$test"); //結果: TEST= include 'hoge.php'; echo("TEST=$test"); //結果: TEST=HellowWorld!! ?> ▼読み込んだ結果こういう風に処理されている <?php echo("TEST=$test"); $test = 'HellowWorld!!'; echo("TEST=$test"); ?> includeした部分に変数の宣言・初期化が埋め込まれるので、 二度目のechoでは$testに値が入っているわけです。 file_get_containsは単にファイルを読んでいるだけかと思います。 リファレンス読みました? include http://jp2.php.net/manual/ja/function.include.php file_get_contains http://jp2.php.net/manual/ja/function.file-get-contents.php
質問者からのお礼
>リファレンス読みました? ……今読んでます。
関連するQ&A
- 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_get_contents()の引数
PHPのfile_get_contents()関数についてです。 file_get_contentsに付けるパラメータはどのようなものがありますか? 解りやすく教えて頂けると助かります よろしくお願いします!
- 締切済み
- 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でのデータ挿入
file_get_contentsで取得したHTMLに特定の文字列を挿入して出力したいです。 下記の実行ですと'0'が返ってきてしまいます。 どこが問題なのでしょうか? <?php $html_data = mb_convert_encoding(file_get_contents("http://www.yahoo.co.jp"),'UTF-8','auto'); $str = 'aaa'; $html_data += $str; print($html_data); ?>
- 締切済み
- PHP
- 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
- file_get_contents()の動きが読めません…。
いつもお世話になっております。(環境:PHP5.2.5) file_get_contents()を外部ファイル(クラス)の中で使ってデータを取得し、 そのクラスをメインファイルで読み込み、 メインの方で、その得たデータを使おうとしています。 (仮に、メインファイルの名前をmain.phpとしておきます。) その際、クラスの中に書くコードについてですが、 下記のように、2通りの書き方が浮かびました。 (仮に、このクラスファイルの名前をclass.phpとしておきます。) //------------------------------------------------------------ $url= 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; $html = file_get_contents($url); //------------------------------------------------------------ $url= $_SERVER['SCRIPT_FILENAME']; $html = file_get_contents($url); //------------------------------------------------------------ で、パターン2の方は、うまく行くのですが、 パターン1の方の処理だと、なぜか、 その処理を行おうとしているファイル(main.php)のダウンロードを開始しようとするのです! ブラウザに「ダウンロードウィンドウが立ち上がる…」という状況です。 パターン1では、 $url_1 = "http://example.com"; のような、「http://」で始まる書式のURLを file_get_contents()の引数に入れることになりますが、 これ自体は問題ないと思っています。 実際、クラスで読み込む方法ではなく、file_get_contents()を使う方法では、 問題なく動いたからです。 つまり、 メインファイルに、 上記の2パターンを書いて試した場合には、問題なくうまくいったのです。 言い換えれば、 メインファイルだけで完結している場合には、 どうも問題は起こらないようで、 クラスなどで引っ張ってくると、問題が起こるようなのです。 (私の勘違いの可能性もありますが…。) 以上、まとりのない文章で、申し訳ありません。 自分でも、なにがなにやら、よく分かっていないため、 多くの情報を提供することで、なんとかアドバイスを頂けないかと思い、 ひとまず、使えそうな情報を並べてみました。 チェック項目など、提示いただければ、 適宜、それに従って対応致しますので、 どうかご助言をよろしくお願い致します。
- ベストアンサー
- PHP
- file_get_contentsでcss読み込み
file_get_contentsで、<link rel="stylesheet" href="style.css">と同じことをやるにはどうすればよいのでしょうか? 結果をechoすると、同じこと? それとも、結果をechoするのは、htmlにcssを直書きする内部css扱いになるので、 <link rel="stylesheet" の外部cssとは異なる? css読み込めれば、「file_get_contents」でなくても良いです。 「include」とかでもcssを読み込めるのでしょうか?
- ベストアンサー
- PHP
- file_get_contents()の挙動につい
今、PHPを使用したHTTP通信につきまして困っております。 何でも結構ですのでアドバイスいただけましたら助かります。。 file_get_contents()を利用して、REST通信をしています。 200応答時は問題無いのですが、404や400応答時に file_get_contents()はfalseしか返さず、 本来受信しているはずのコンテンツを取得することができません。 色々試していたのですが、解決策が見つかりませんでした。 よろしくお願いしますm(_ _)m
- ベストアンサー
- PHP
- file_get_contents()にて文字化け
PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m
- 締切済み
- PHP
- file_get_contentsなどでrefererを設定する方法。
phpでの質問です。 file_get_contentsなどでファイルを取得できますが、それにreferer(リンク元)を設定したいのです。 どうしたら良いのでしょうか。教えて下さい。 HTTP_clientなどのpearは使えない環境にあります。
- 締切済み
- PHP
質問者からのお礼
回答ありがとうございました。 おかげで無事解決しました。 ▼勘違いしていた点; ・文字列として読み込まれるのであれば、var_dumpすれば当然ブラウザ上で確認できると思っていた点。 自分でも色々試している内、勘違いに気がつきました。 勉強になりましたー。