file_get_contents

file_get_contents で URL で指定したページのソースを取得します。
テストした PHP のバージョン(2015/06/10 現在)は PHP Version 5.4.41 です。

test.txt を表示

  1. ファイルサイズが小さい test.txt を取得して印字します。
    test.txt の作成は ファイルの入出力 を参照して下さい。
    file_get_contents は ファイルの入力 でコマンドモードから実行するプログラムを掲載しているのですが、今回はサーバーにアップロードします。
  2. get_test.php のソースコードを Shift-JIS でタイプしてサーバーにアップロードして下さい。
    <html>
    <body>
    <h2>'test.txt' を印字</h2>
    <pre>
    <?php
      $url = 'test.txt';
      $contents = file_get_contents($url);
      print($contents);
    ?>
    </pre>
    </body>
    </html>
    
  3. PHP のプログラム(get_test.php)を呼び出すコードです。
    <a href="http://maedakobe.rw.xsi.jp/php/get_test.php">
    
    次のリンクをクリックすると get_test.php が呼び出されます。
    test.txt を印字
  4. 【実行結果】
    'test.txt' を印字
    
    りんご
    バナナ
    パイナップル
    いちご
    
  5. プログラムの説明です。
    file_get_contents($url); 関数で $url で指定したページのソースコードを取得します。
    'test.txt' はこのページと同じフォルダーに格納されています。

php.html を表示

  1. PHP のトップページ(php.html)の50バイト目から500バイト分を表示します。
    get_php.php のソースコードを UTF-8 でタイプしてサーバーにアップロードして下さい。
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    </head>
    
    <body>
    <h2>私の PHP ページを取得</h2>
    <?php
      $url = "php.html";
      $contents = file_get_contents($url,false,null,50,500);
      print($contents);
    ?>
    </body>
    </html>
    
  2. 次のリンクをクリックすると get_php.php が呼び出されます。
    php.html を印字
  3. プログラムの説明です。
    file_get_contents() で50バイト目から500バイト分を表示します。
    PHP のページは UTF-8 でタイプされています。
    'test.txt' のように Shift-JIS でタイプすると文字化けします。
  4. 'php.html' はこのページと同じフォルダーに格納されています。
    本来なら URL をフルパスで設定しても良いはずなのですが、何故か表示されません?
    実行環境の問題でしょうか?
      $url = "http://maedakobe.rw.xsi.jp/php/php.html";
    

'test.txt' の Header を印字

  1. get_header.php のソースコードを Shift-JIS でタイプしてサーバーにアップロードして下さい。
    <html>
    <body>
    <h2>'test.txt' の Header を印字</h2>
    <pre>
    <?php
    $url = "test.txt";
    $opts = array('http' =>
        array(
            'method' => 'GET',
            'max_redirects' => '0',
            'ignore_errors' => '1'
        )
    );
    $context = stream_context_create($opts);
    $stream = fopen($url, 'r', false, $context);
    // ヘッダ情報&ストリームのメタデータ
    var_dump(stream_get_meta_data($stream));
    // $url の実際のデータ
    var_dump(stream_get_contents($stream));
    fclose($stream);
    ?>
    </pre>
    </body>
    </html>
    
  2. 次のリンクをクリックすると get_header.php が呼び出されます。
    'test.txt' の Header を印字
  3. 【実行結果】
    'test.txt' の Header を印字
    array(9) {
      ["wrapper_type"]=>
      string(9) "plainfile"
      ["stream_type"]=>
      string(5) "STDIO"
      ["mode"]=>
      string(1) "r"
      ["unread_bytes"]=>
      int(0)
      ["seekable"]=>
      bool(true)
      ["uri"]=>
      string(8) "test.txt"
      ["timed_out"]=>
      bool(false)
      ["blocked"]=>
      bool(true)
      ["eof"]=>
      bool(false)
    }
    string(34) "りんご
    バナナ
    パイナップル
    いちご
    "
    
  4. プログラムの説明です。
    $opts で 'method' => 'GET', 'max_redirects' => '0', 'ignore_errors' => '1' を設定します。
    $context = stream_context_create($opts); で $context を設定します。
  5. $stream = fopen($url, 'r', false, $context); でファイルをオープンします。
  6. ヘッダ情報&ストリームのメタデータの印字です。
    var_dump(stream_get_meta_data($stream));
  7. $url の実際のデータの印字です。
    var_dump(stream_get_contents($stream));

POST のテスト

  1. インターネットで検索すると file_get_contents() で 'POST' 形式のパラメータが渡せるような記述があるので調べてみました。
    テストするプログラムは POST Parameter の param_post.php を使用します。
    param_post.php の元のソースコードです。
    <?php
        $v1= $_POST["v1"];
        $v2= $_POST["v2"];
        $v3= $_POST["v3"];
        print "<p>$v1<br>$v2<br>$v3<br></p>";
    ?>
    
  2. 最初は単純に入力して表示します。
  3. ネットで検索したプログラムを真似てみます。
  4. 'param_post.php' では 'v1', 'v2', 'v3' を POST で受け取っています。
        $v1 = $_POST['v1'];
        $v2 = $_POST['v2'];
        $v3 = $_POST['v3'];
    
  5. HTML タグを追加します。
  6. どうしても POST でパラメータを設定することが出来ません。 (^_^;)
    どこかプログラムが間違っているのでしょうか?
    それとも私の実行環境の問題でしょうか?
    ご存じの方がおられましたら、メールして下さい。

前田稔の超初心者のプログラム入門
PHP Program