PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでCSVファイルを読み込んで解析する方法【サンプルコード付き】

PHPでは、fopen()関数とfgetcsv()関数を組み合わせることで、CSVファイルを簡単に解析(パース)できます。fopen()の引数には、読み込みたい.csvファイルのパスを指定します。

基本的なサンプルコード

$row_count = 1;
if (($infile = fopen("path to .csv file", "r")) !== FALSE) {
    while (($data_in_csv = fgetcsv($infile, 800, ",")) !== FALSE) {
        $data_count = count($data_in_csv);
        echo "<p> $data_count in line $row_count: <br /></p>\n";
        $row_count++;
        for ($counter = 0; $counter < $data_count; $counter++) {
            echo $data_in_csv[$counter] . "<br />\n";
        }
    }
    fclose($infile);
}

コードの解説

このコードは、以下のような流れで動作します。

  • ファイルを開く: fopen()により、対象のCSVファイルが存在すれば読み取りモード("r")で開かれます。
  • 1行ずつ読み込む: fgetcsv()FALSEを返すまでwhileループで繰り返し処理を行います。第2引数の「800」は、1行あたりの最大読み込み文字数のしきい値です。
  • 行番号を進める: $row_countカウンタをインクリメントすることで、ファイルの次の行へ処理を移します。
  • ファイルを閉じる: 読み込みが完了したら、fclose()でファイルを確実にクローズします。

実行結果

入力されたCSVファイルが解析され、内容が1行ずつ画面に出力されます。

PHP 5.3.0以降で使える簡潔な書き方

PHPのバージョンが5.3.0以上であれば、file()関数とstr_getcsv()関数を組み合わせることで、よりシンプルに記述できます。

$file_to_read = file('path to .csv file');
$data_to_ingest = [];
foreach ($file_to_read as $infile) {
    $data_to_ingest[] = str_getcsv($infile);
}

この方法では、CSVファイル全体を配列として読み込み、各行を個別の配列要素に変換して格納できます。

注意点

注意: 上記のfile()+str_getcsv()の方法は、CSVファイル内に改行コードが含まれている場合には正しく動作しません。これは、file()関数が単純に改行位置で行を分割する仕組みになっており、ダブルクォート(引用符)で囲まれたフィールド内の改行を識別できないためです。

まとめ

PHPでCSVファイルを解析する基本は、fopen()fgetcsv()の組み合わせです。大規模なファイルでもメモリ効率よく1行ずつ処理できます。一方、ファイル全体をまとめて配列化したい場合は、PHP 5.3.0以降で利用可能なfile()str_getcsv()が便利ですが、フィールド内に改行を含むCSVには対応できない点に留意しましょう。

  1. TXTファイルをCSVに変換する方法|Excelとオンラインツールの手順を解説

    テキストファイル(TXT)は、書式設定のないプレーンなテキストのみで構成された標準的な文書形式です。ほとんどのデバイスで開くことができ、拡張子は「.txt」となります。一方、CSV(カンマ区切り値)ファイルは、データがカンマやタブなどの区切り文字で整理された、より構造化された形式のファイルです。ウェブサイトからダウンロードすると、CSVではなくTXTファイルが取得できることもありますが、単に拡張子を変更しても正しく変換されません。そのため、ユーザー自身がTXTファイルをCSVファイルに変換する必要があります。 Excelを使ってTXTファイルをCSVに変換する方法 ExcelはTXTファイルと

  2. WordPressのwp-config.phpファイルを保護する方法を徹底解説

    ハッカーの視点で考えてみてください。何千ものWebサイトが利用しているプラットフォームに侵入したり、複数のサイトに対してブルートフォース攻撃を仕掛けたりするのは、彼らにとって魅力的な標的です。WP-Scannerのようなオープンソースツールが出回っている現在、初心者レベルの攻撃者でも、プロフェッショナルなWordPressサイトに侵入し、悪夢のような被害をもたらすことが可能になっています。 その中でもwp-config.phpは、サイトの運命を左右する最重要ファイルの一つです。このファイルが漏洩すれば、サイト全体が危険にさらされます。本記事では、wp-config.phpファイルを安全に保護す