PHP入門 | テキストファイルの利用 | インターネット上のファイルも読める?

ここまでPHPのファイルアクセス関数について簡単に整理してきたが、最後に重要な秘密を紹介しよう。

実は、PHPのファイル関連関数はローカルボリュームに保存されているファイルだけでなく、インターネット上にあるファイルにも同じようにアクセスできる。

ただし、ファイルを書き換えることはできない。基本的にはデータを読み込めるだけである。それでも「Webサイトのデータを自由に読み込める」と考えれば、かなり強力だと思わないだろうか。

使い方は簡単である。それぞれの関数でファイルを指定する引数に、ファイル名やファイルパスの代わりにURLを書けばよい。例えば次のようにする。

$lines = file("http://www.google.com/");

このようにすると、GoogleのトップページのHTMLコードをすべて取得できる。

以下に簡単な使用例を示す。

<?php
    if ($_POST != null){
        $url = $_POST['text1'];
        $lines = file($url);
        $result = implode($lines);
    }
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <form method="post" action="./index.php">
            <input type="text" name="text1" size="40"
                value="<?php echo htmlspecialchars($url); ?>"><br>
            <input type="submit">
        </form>
        <hr>
        <?php echo htmlspecialchars($result); ?>
    </body>
</html>

入力フィールドにURLを書いて送信すると、そのページの内容をダウンロードして下に書き出す。実際に試してみよう。別のサイトのデータを簡単に取得できることが分かる。

ただし、ネットワーク上のファイルを読み込む場合は、読み込みに失敗したり非常に時間がかかったりすることも多い。そのような場合への対応も考えておかなければならない。それでも、これほど簡単にWebデータを取得できるなら、さまざまな用途に応用できるはずだ。