PHPでCSVファイルを読み込み・書き出しする方法を初心者にもわかりやすく解説!

PHPではCSVファイルを読み込みしたり、書き出ししたりすることができます。この記事では、PHPでCSVファイルを読み込みしたり書き出ししたりする方法について、わかりやすくお伝えします。また、CSVファイルを読み込みするときの文字化けについてもお伝えします。

PHPでCSVファイルを読み込み・書き出しする方法を初心者にもわかりやすく解説!のイメージ

目次

  1. 1PHPではCSVファイルを配列の形で読み込み・書き込みできる
  2. fgetcsv関数で配列の形にする
  3. 2PHPでCSVファイルを読み込みする方法
  4. READ_CSVを使って読み込みする方法
  5. 3PHPでCSVファイルを書き出しする方法
  6. 4PHPでCSVファイルを読み込み・書き出しするときの文字コードについて
  7. PHP側で対処する場合
  8. CSVファイル側で対処する場合
  9. 5PHPでCSVファイルの読み込みができるようにしよう!

PHPではCSVファイルを配列の形で読み込み・書き込みできる

Webサイトを構築するのに、HTMLとともに欠かせないプログラミング言語であるのがPHPです。PHPを使って、Webサイトでさまざまなことができるようになります。PHPでできることの一つに、CSVファイルの配列の読み込みと書き出しがあります。

CSVファイルでは、さまざまなデータを表計算の形式で表現できます。これをファイルの形式のままでWebサイトに読み込みができれば、Webサイトでデータを示したいときにとても便利です。

また、CSVファイルからデータを読み込んで更新できるようにPHPでプログラミングして設定しておけます。そうすれば、CSVファイルを更新するたびに、わざわざWebサイトに入力し直すことなく、データの更新ができるようになります。

この記事では、PHPを使ってCSVファイルからデータを読み込みしたり、書き込みしたりする方法について詳しく解説します。

fgetcsv関数で配列の形にする

CSVファイルをPHPで読み込みするためには、主な方法としてはfgetcsv関数を使います。fgetcsv関数は「CSV」という文字列が中に入っていることからもわかる通り、CSVファイルの読み込み処理するための関数です。

fgetcsvを使いこなせれば、CSVファイルの読み込みがPHPでできるようになるので、ぜひ利用できるようにしましょう。

ThumbプログラミングにはMacがおすすめ!開発向けのスペックでパソコンを選ぼう!
これからプログラミングの勉強を始めようと思っている皆さんは、PC選びで悩んでいませんか?Ma...

PHPでCSVファイルを読み込みする方法

それではPHPでCSVファイルを読み込みするコードを見ていきましょう。あらかじめCSVファイルを作成して、PHPの実行フォルダに保存しておきましょう。

PHPでCSVファイルを読み込みする方法

今回は上記のようなCSVファイルを作成しました。ファイル名は「test.csv」です。その上で、適当なエディタに以下のプログラムを作成します。

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle))) {
        echo "${row}行目\n";
        $row++;
        foreach ($data as $value) {
            echo "「${value}」\n";
        }
    }
    fclose($handle);
}

PHPでCSVファイルを読み込みする方法

すると、上記の画像の様にCSVファイルがPHPで読み込みされました。

「if (($handle = fopen("test.csv", "r")) !== FALSE)」
上記の行でまずは読み込みしようとしているファイルが存在しているかどうかを確認しています。

「while」からの行で、1行ずつfgetcsの関数を使ってCSVファイルの配列を読み込みして表示するようにプログラムしています。

READ_CSVを使って読み込みする方法

CSVファイルを読み込みする方法には、「READ_CSV」を使う方法もあります。「READ_CSV」は、ファイル操作をするためのSplFileObjectクラスの1つです。こちらを使ったプログラムは次の通りです。
 

<?php
 
$filepath = 'test.csv';
$file = new SplFileObject($filepath);
$file->setFlags(SplFileObject::READ_CSV);
$row = 0;
foreach ($file as $line) {
  if (empty($line[0])){
    echo 'continue';
    continue;
  }
  $cnt = count($line);
  if ($row == 0){
    echo 'タイトル:'.$line[0].'<br>';
    $row++;
    continue;
  }
  for($i = 0; $i < $cnt; $i++){
    echo $line[$i].'<br>';
  }
}
?>

するとこのようにCSVファイルが出力されます。

PHPでCSVファイルを読み込みする方法
Thumbショートカット(旧:Workflow)の自動化プログラミングで自作レシピの作成方法を解説!
ショートカット(旧:Workflow ワークフロー)の自動化プログラミングで自作レシピを作成...

PHPでCSVファイルを書き出しする方法

外部のCSVファイルを、その配列のままでPHPで読み込みするだけではなく、CSVファイルにPHPを使って書き出しすることもできます。プログラムに書き出した文字列の配列を、カンマ区切りのCSVファイルに書き出すプログラムは次の通りです。
 

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$file = new SplFileObject('file.csv', 'w');

foreach ($list as $fields) {
    $file->fputcsv($fields);
}

?>

PHPでCSVファイルを読み込みする方法

上記のプログラムを実行すると、画像の様に「file.csv」というcsvファイルが作成されます。

PHPでCSVファイルを読み込みする方法

こちらを開くと、次の画像のような文字列が書き出しされています。このように、PHPを使ってCSVファイルを書き出しすることも可能です。

Thumbプログラミング学習アプリのおすすめ11選!子供&初心者向け入門編の勉強に役立つ無料アプリも紹介!
プログラミング学習アプリのおすすめ11選、子供&初心者向け入門編の勉強に役立つ無料アプリを解...

PHPでCSVファイルを読み込み・書き出しするときの文字コードについて

PHPでCSVファイルを読み込みする方法

CSVファイルの配列をPHPで読み込みしたり書き出ししたりするときに、良く起こる問題が文字化けです。文字化けが起こる原因は、CSVファイルを保存した時の文字コードと、PHPで読み込みや書き出しをするときの文字コードが違うためです。文字コードが違って、文字化けしてしまうときには、文字コードを一致させる必要があります。

こちらでは、PHPとCSVファイルの文字コードを一致させる方法について解説します。

PHP側で対処する場合

PHP側で対処する場合には、PHPのヘッダーで文字コードを指定します。PHPを書き出すときに、ヘッダーを挿入して、そちらで文字コードcharsetを指定します。文字コードを指定するプログラムの書き方は次の通りです。
 

<?php
 
header("Content-Type: text/html; charset=UTF-8");

carset=」のあとに書かれている「UTF-8」が文字コードです。文字コードは各国の言語ごとに開発されてきたので、膨大な数があります。しかし、現在では「UTF-8」が標準的な文字コードとなっています。

しかし、「UTF-8」でファイルが作成されているとは限らない場合もあるので、もしも「UTF-8」で文字化けしてしまうときには、「UTF-8」の部分を違う文字コードに変更しましょう。

CSVファイル側で対処する場合

PHPで読み込みをするCSVファイルを保存するときに、文字コードを「UTF-8」に指定して保存すると、文字化けせずにPHPに読み込みできます。CSVファイルを作成した表計算で文字コードの指定ができない場合には、いったん保存してから他のファイルで開きなおして文字コードを変更することもできます。

PHPでCSVファイルを読み込みする方法

上記の画像の様に、CSVファイルはメモ帳でも開けます。

PHPでCSVファイルを読み込みする方法

メモ帳は、保存するときに上記の画像の様に文字コードを指定できます。文字コードを「UTF-8」で保存すれば、PHPで読み込みしても文字化けせずに開けます。

ThumbMinecraft(マインクラフト)でプログラミングを学ぶ!子供も楽しめながら学べるおすすめの方法!
マインクラフトは子供たちの間にとても人気が高いゲームですが、実は子供のプログラミング学習にも...

PHPでCSVファイルの読み込みができるようにしよう!

この記事では、PHPでCSVファイルの読み込みと書き出しをする方法について解説してきました。PHPを使うと、HTMLを使っているときだけとは違い、Webサイトの内容に幅が出ます。その一つが、CSVファイルの読み込みでしょう。

CSVファイルをPHPを使ってWebサイトに組み込むことで、日々更新されていくデータを、Webサイトの簡単な更新だけで表示できます。ぜひ、Webサイトでデータを掲載する必要がある方は、CSVファイルの配列の読み込み方、書き出し方も覚えて、Webサイトの構築に役立ててください。

関連するまとめ

Original
この記事のライター
K.C
皆様のお役に立てる情報をお届けするために日々精進していきます。どうぞよろしくお願いします。