PHP で CSV ファイルを読み取ったり解析したりする

Muhammad Abubakar 2023年1月30日
  1. PHP で fread() を使用して CSV ファイルを読み取る
  2. PHP で readfile() を使用して CSV ファイルを読み取る
  3. Python で str_getcsv() 関数を使用して CSV を解析する
  4. Python で fgetcsv() 関数を使用して CSV を解析する
PHP で CSV ファイルを読み取ったり解析したりする

ファイル処理は、Web アプリケーションの重要なコンポーネントです。このチュートリアルでは、ファイル処理を使用してファイルを読み取り、書き込み、および追加する方法を紹介します。

PHP で fread() を使用して CSV ファイルを読み取る

これは、PHP で CSV ファイルを読み取るための基本的な機能です。ファイルを読み取り、ファイルに存在するすべてのコンテンツを返します。

サンプルコードを参照してください。

<?php
$file = "text1.csv";
$openfile = fopen($file, "r");
$cont = fread($openfile, filesize($file));
echo $cont;
?>  

出力:

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

fread() には、データを読み取るファイルと、ファイルをパラメーターとして関数 filesize($file) に渡すことで取得できるファイルのサイズの 2つのパラメーターが必要です。

PHP で readfile() を使用して CSV ファイルを読み取る

この関数はファイルを読み取り、結果をメモリまたはキャッシュに保存します。ファイルを開き、ファイルの内容を読み取ります。ファイルである 1つのパラメーターのみを受け入れます。

<?php
echo readfile("text1.csv");
?>

Ouput:

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""
49

fread() 関数はファイルを読み取ってエディターにデータを返すだけですが、readfile() 関数はファイルを読み取るだけでなく、その結果をメモリまたはキャッシュに保存します。

Python で str_getcsv() 関数を使用して CSV を解析する

この関数は、CSV 形式の文字列を解析し、ファイルのデータを含む配列を返します。データを CSV ファイルから配列に変換しますが、実行する前に、ファイルとモードをパラメーターとして受け取る fopen() 関数を使用してファイルを開く必要があります。次の例を参照してください。

<?php
$handle = fopen("text1.csv", "r");
$lineNumber = 1;
while (($raw_string = fgets($handle)) !== false) {
    $row = str_getcsv($raw_string);
    var_dump($row);
    $lineNumber++;
}
fclose($handle);
?>

出力:

array(4) {
  [0]=>
  string(3) "aaa"
  [1]=>
  string(3) "bbb"
  [2]=>
  string(3) "ccc"
  [3]=>
  string(4) "dddd"
}
array(3) {
  [0]=>
  string(3) "123"
  [1]=>
  string(3) "456"
  [2]=>
  string(3) "789"
}
array(2) {
  [0]=>
  string(5) ""aaa""
  [1]=>
  string(5) ""bbb""
}

Python で fgetcsv() 関数を使用して CSV を解析する

次に、fgetcsv() という名前のクールな関数を使用して、CSV ファイルからデータを解析します。この機能を使用するには、次の手順が必要です。

  1. ファイルを開いて、ファイルからファイルデータにアクセスします
  2. ループ内で fgetcsv() 関数を使用して、ファイルの各行を個別に解析します。
  3. ファイルを閉じます

サンプルコードを参照してください。

<?php

$file = fopen('text1.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
    echo '<pre>';
    print_r($line);
    echo '</pre>';
}
fclose($file);
?>

出力:

<pre>Array
(
    [0] => aaa
    [1] => bbb
    [2] => ccc
    [3] => dddd
)
</pre><pre>Array
(
    [0] => 123
    [1] => 456
    [2] => 789
)
</pre><pre>Array
(
    [0] => "aaa"
    [1] => "bbb"
)
</pre>

関連記事 - PHP File