初心者でも分かる!PHPでファイル読み込みの3つの方法とその応用例10選

PHPのファイル読み込み方法とその応用例の解説イメージ PHP
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

皆さん、こんにちは。

この記事を読んでいるあなたは、PHPでのファイル読み込みについて学びたいと思っていることでしょう。

そんなあなたに朗報です。

この記事を最後まで読むことで、PHPでファイルを読み込む方法をマスターすることができます。

そして、それらの方法を使った10種類の応用例も紹介します。それでは早速、学んでいきましょう。

●PHPのファイル読み込みとは

PHPのファイル読み込みとは、PHPを使用してサーバ上のファイルの内容を読み込む処理のことを指します。

ウェブアプリケーションやシステムの開発では、ファイルからデータを取得するケースが頻繁にあります。

これは設定情報を読み込んだり、CSVやテキストファイルなどのデータを扱う際に必要な処理です。

○ファイル読み込みの基本

ファイルの読み込みは、主にファイルの内容をメモリ上に読み込むために行います。

PHPでは、この操作を容易に行うためのいくつかの関数が提供されています。

これらの関数の使用方法や特性を理解することで、様々な状況に対応することが可能になります。

●PHPでのファイル読み込みの3つの方法

PHPでは主に次の3つの関数を使用してファイルを読み込むことができます。

それぞれの関数がどのように動作するか、そしてそれぞれの特性について詳しく見ていきましょう。

○サンプルコード1:file_get_contents()関数を使う方法

file_get_contents()関数は、指定したファイルの全内容を文字列として取得する関数です。

<?php
$file = 'example.txt';
$content = file_get_contents($file);
echo $content;
?>

このコードではfile_get_contents()関数を使って”example.txt”という名前のファイルを読み込んでいます。

その後、読み込んだ内容をechoを使って表示しています。

この関数はファイル全体を一度に読み込むため、メモリ消費が大きいという特性があります。

そのため、大きなファイルを読み込む場合は別の方法を検討した方が良いかもしれません。

○サンプルコード2:fopen()関数とfgets()関数を使う方法

fopen()関数とfgets()関数を組み合わせることで、行単位でファイルを読み込むことができます。

<?php
$file = 'example.txt';
$handle = fopen($file, 'r');
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    fclose($handle);
}
?>

このコードでは、fopen()関数を使って”example.txt”というファイルを開き、fgets()関数を使って行ごとにその内容を読み込んでいます。

そして、各行の内容をechoを使って表示しています。

この方法の利点は、ファイル全体を一度に読み込む必要がないため、大きなファイルを扱う場合でもメモリ消費を抑えられることです。

○サンプルコード3:file()関数を使う方法

file()関数を使うと、ファイルの内容を行ごとに配列に格納することができます。

<?php
$file = 'example.txt';
$lines = file($file);
foreach ($lines as $line) {
    echo $line;
}
?>

このコードでは、file()関数を使って”example.txt”というファイルの内容を行ごとに配列に読み込んでいます。

その後、foreachを使って配列の内容を一行ずつ表示しています。

この関数は行単位で処理を行うため、特定の行を取り出したいときなどに便利です。

ただし、大きなファイルを扱う場合は、メモリの消費に注意が必要です。

●PHPのファイル読み込みの応用例10選

それでは、具体的にPHPのファイル読み込みがどのように利用されるか、10の応用例を見ていきましょう。

○サンプルコード4:CSVファイルを読み込んでデータを取り出す

CSVファイルは、データの交換フォーマットとして広く利用されています。

PHPでは、fgetcsv()関数を使ってCSVファイルを読み込むことができます。

<?php
$file = 'example.csv';
$handle = fopen($file, 'r');
if ($handle) {
    while (($data = fgetcsv($handle)) !== false) {
        print_r($data);
    }
    fclose($handle);
}
?>

このコードでは、fopen()関数でCSVファイルを開き、fgetcsv()関数でその内容を行ごとに配列として取得しています。

そして、取得した配列をprint_r()関数で表示しています。

この方法を使うと、CSVファイルの各行が配列として扱えるため、各項目にアクセスすることが容易になります。

○サンプルコード5:テキストファイルの内容をWebページに表示する

PHPを使ってテキストファイルの内容をウェブページ上に表示することも可能です。

下記のコードでは、file_get_contents()関数を使ってファイルの内容を取得し、そのまま表示しています。

<?php
$file = 'example.txt';
$content = file_get_contents($file);
echo nl2br($content);
?>

このコードではfile_get_contents()関数を使用して”example.txt”ファイルの内容を読み込み、その内容をウェブページに表示しています。

また、改行コードをHTMLの改行タグに変換するためにnl2br()関数を使用しています。

このように、PHPを使うと、ファイルの内容をウェブページに直接表示することができます。

これにより、動的なウェブページを作成することが可能になります。

○サンプルコード6:テキストファイルを読み込んでデータベースに保存する

テキストファイルの内容をデータベースに保存することも可能です。

これは、ログファイルの内容をデータベースに保存したり、テキストファイルに格納されているデータをデータベースに移行する場合などに役立ちます。

下記のコードでは、PDOを使用してデータベースに接続し、テキストファイルの各行をデータベースに保存しています。

<?php
// データベースへの接続
$dbh = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');

$file = 'example.txt';
$lines = file($file);
foreach ($lines as $line) {
    // SQL文の準備
    $sql = "INSERT INTO table (column) VALUES (:value)";
    $stmt = $dbh->prepare($sql);
    
    // パラメータのバインド
    $stmt->bindParam(':value', $line, PDO::PARAM_STR);
    
    // SQL文の実行
    $stmt->execute();
}
?>

このコードではまずPDOを使ってデータベースに接続しています。

次に、file()関数を使って”example.txt”ファイルの内容を読み込み、その内容をforeachで一行ずつ取り出しています。

取り出した各行はデータベースに保存されます。

注意点として、データベースへの書き込みは重い処理であり、大量のデータを一度に書き込むとパフォーマンスに影響を及ぼす可能性があるため、適切な処理の分割や一時停止が必要な場合があります。

○サンプルコード7:ファイルの内容を読み込んでソートする

ファイルの内容をソートする場合、PHPの配列関数とファイル関数を組み合わせて使用することができます。

下記のコードは、ファイルの内容を行単位で読み込み、それをソートして表示する例です。

<?php
$file = 'example.txt';
$lines = file($file);
sort($lines);
foreach ($lines as $line) {
    echo $line;
}
?>

このコードでは、file()関数を使ってファイルの内容を行単位で配列に読み込み、sort()関数を使って配列をソートしています。

そして、foreachを使ってソートされた内容を表示しています。

これにより、ファイルの内容を任意の順序で表示することが可能になります。

ソートする順序はsort()関数だけでなく、usort()関数などを使って自由に定義することができます。

○サンプルコード8:XMLファイルを読み込んでデータを取り出す

XMLファイルは情報交換のための一般的なフォーマットであり、PHPを使用して読み込みと解析が可能です。

下記のコードは、PHPのSimpleXMLを用いてXMLファイルを読み込み、データを取り出す例を示しています。

<?php
$xml = simplexml_load_file('example.xml');
foreach ($xml->item as $item) {
    echo $item->title . "\n";
    echo $item->link . "\n";
}
?>

上記のコードでは、simplexml_load_file()関数を使って’example.xml’ファイルを読み込み、その内容をforeachで一つずつ取り出して表示しています。

この例では、’item’エレメントの’title’および’link’を取得しています。

○サンプルコード9:ファイルの内容を読み込んで検索する

ファイルから特定の文字列を検索するには、file()関数と配列関数を組み合わせて使用することができます。

下記のコードでは、ファイルから特定の文字列を検索してその行を表示する例を示しています。

<?php
$file = 'example.txt';
$lines = file($file);
$search = 'keyword';
foreach ($lines as $line) {
    if (strpos($line, $search) !== false) {
        echo $line;
    }
}
?>

このコードでは、file()関数を使用して’example.txt’ファイルの内容を配列として読み込み、その後、各行について検索キーワードが含まれているかどうかを確認しています。

もしキーワードが含まれていればその行を表示します。

○サンプルコード10:JSONファイルを読み込んでデータを取り出す

JSON形式のファイルは、データ交換の一般的なフォーマットであり、PHPで簡単に読み込みと解析が可能です。

下記のコードは、file_get_contents()関数とjson_decode()関数を用いてJSONファイルを読み込み、そのデータを取り出す例を示しています。

<?php
$json = file_get_contents('example.json');
$data = json_decode($json, true);
foreach ($data as $item) {
    echo $item['title'] . "\n";
    echo $item['link'] . "\n";
}
?>

このコードでは、file_get_contents()関数で’example.json’ファイルの内容を取得し、json_decode()関数でその内容を配列に変換しています。

その後、foreachを使用して各アイテムの’title’および’link’を表示しています。

○サンプルコード11:ファイルを行ごとに読み込んで処理する

ファイルを行ごとに読み込むためには、fopen()関数とfgets()関数を使用することが一般的です。

下記のコードは、指定したテキストファイルを開き、それを行ごとに読み込んで各行を表示する例を示しています。

<?php
$file = 'example.txt';
$handle = fopen($file, 'r');
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    fclose($handle);
}
?>

このコードでは、まずfopen()関数で’example.txt’ファイルを開いています。

そして、fgets()関数を使ってファイルを行ごとに読み込み、その内容を表示しています。

○サンプルコード12:外部サイトのHTMLを読み込んでスクレイピングする

PHPはウェブスクレイピングにも使用できます。

下記のコードは、外部のウェブサイトからHTMLを読み込み、特定のデータを取り出す例を示しています。

<?php
$html = file_get_contents('https://example.com');
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('h1');
foreach ($tags as $tag) {
    echo $tag->nodeValue . "\n";
}
?>

このコードでは、まずfile_get_contents()関数を使って外部サイトのHTMLを取得しています。

次に、DOMDocumentオブジェクトを生成し、loadHTML()メソッドでHTMLをパースしています。

最後に、getElementsByTagName()メソッドを使ってh1タグを取得し、その内容を表示しています。

○サンプルコード13:設定ファイルを読み込んで設定を適用する

設定ファイルを読み込むための一般的な方法は、parse_ini_file()関数を使用することです。

下記のコードは、指定した設定ファイル(INI形式)を読み込んでその設定を適用する例を示しています。

<?php
$config = parse_ini_file('config.ini');
echo 'Database user: ' . $config['db_user'];
?>

このコードでは、parse_ini_file()関数を使用して’config.ini’設定ファイルを読み込み、その設定情報を配列に格納しています。

その後、データベースのユーザー名(’db_user’)を表示しています。

●注意点と対処法

PHPでファイルを読み込むときは、いくつかの注意点があります。

まず、ファイルが存在しない場合や読み込み権限がない場合、エラーが発生します。

これを防ぐためには、ファイルが存在するかどうかを確認し、適切な権限があるかどうかを確認することが重要です。

また、大きなファイルを読み込む場合は、メモリ使用量に注意する必要があります。

特にfile_get_contents()関数は、ファイル全体をメモリにロードするため、大きなファイルを扱うときはリソースの消耗を引き起こす可能性があります。

大きなファイルを読み込む場合には、fopen()とfgets()を使って行ごとに読み込む方法が推奨されます。

最後に、外部サイトからデータを取得する際には、ネットワークの問題やターゲットサイトの変更によりデータが取得できなくなる可能性があります。

常にエラーハンドリングを行い、適切なエラーメッセージを表示するようにすることが重要です。

これらの問題は、適切なエラーハンドリングとリソース管理によって克服することが可能です。

まとめ

この記事では、PHPでファイルを読み込むさまざまな方法について紹介しました。

それぞれの方法は、使用する関数や適用する場面によって異なる利点と制限を持っています。

具体的な使用例を通じて、これらの方法を理解し、最適な方法を選択することができます。

そして、適切なエラーハンドリングとリソース管理を行うことにより、信頼性と効率性を確保することができます。