本文へスキップ

PR

PHPでCSVを読み込む方法|初心者向けに基本コードと文字化け対策を解説

PHPでCSVファイルを読み込みたいけど、どう書けばいいのか分からないよ。文字化けもしちゃって困っているんだ。
大丈夫です。この記事を読めば、基本のコードから文字化けの直し方までしっかり分かりますよ。

プログラミングを勉強していると、CSVファイルのデータを扱いたい場面がよく出てきますよね。

でも、いざコードを書こうとするとエラーが出たり、読めたと思っても文字がぐちゃぐちゃになってしまったりします。

実は、少しの工夫をするだけで、誰でも簡単に解決できるんです。

初心者の方にも分かりやすく、順番に説明していくので安心してくださいね。

この記事ではPHPでCSVを読み込む方法について解説していきます。

PHPでCSVを読み込むのは実はとても簡単

なんだか難しそうなイメージがあるんだけど、本当に私にもできるのかな?

結論から言うと、PHPにはCSVを読み込むための便利な道具が最初から用意されています。

だから、複雑なプログラムを長々と書く必要は全くありません。

たった数行のコードを書くだけで、あっという間にデータを読み込むことができますよ。

具体的に必要な手順は以下の通りです。

  • ファイルを開く
  • データを一行ずつ読み込む
  • ファイルを閉じる
この3つのステップを順番に書くだけで完了です。
fopenやfgetcsvという名前の道具を使います

これらを使うと、面倒な処理をPHPが全部代わりにやってくれます。

だから、初心者の方でもすぐに応用できるようになりますよ。

無料:WordPress ブログの初期設定チェックリスト
28 の設定を 1 枚にまとめた PDF と、5 日間のミニ講座をメールでお届けします。

基本の関数fgetcsvの使い方をマスターしよう

CSVを読み込むときの一番の主役は、fgetcsvという関数です。

この関数は、CSVファイルの中から一行分のデータを取り出して、配列という箱に入れてくれます。

カンマで区切られたデータを自動で切り分けてくれるので、とても便利なんです。

具体的なコードの書き方は以下のようになります。

$file = fopen('data.csv', 'r');
while ($row = fgetcsv($file)) {
    var_dump($row);
}
fclose($file);

ポイントは以下の部分です。

  • fopenで読み込みモードにしてファイルを開く
  • while文を使ってデータがなくなるまで繰り返す
  • 最後にfcloseで必ずファイルを閉じる
なるほど、繰り返し処理と一緒に使うのがコツなんだね。

たったこれだけで、CSVの中身をすべて取り出すことができます。

データの取りこぼしを防ぐためにwhile文を使うのが基本です

文字化けの原因とファイルエンコーディング

コードは合っているはずなのに、日本語が変な記号になっちゃうよ。

CSVを読み込むときに多くの人がつまずくのが、この文字化けという問題です。

これは、ファイルを作ったときの文字のルールと、PHPが読み込むときのルールが食い違っているせいで起こります。

特にWindowsのエクセルで作ったCSVファイルは注意が必要です。

よくある文字のルールの種類は以下の通りです。

  • UTF-8
  • Shift-JIS
エクセルはShift-JISというルールを使うことが多いです。

一方で、現在のPHPやWebサイトはUTF-8というルールを標準として使っています。

このルールの違いが文字をぐちゃぐちゃにしてしまう原因です

だから、読み込んだデータをPHPのルールに合わせて変換してあげる必要があります。

PHPだけでなく他言語でのデータ処理やファイル操作にも興味がある方は、Pythonの標準ライブラリを解説した以下の記事も参考にしてみてください。Python標準ライブラリとは?よく使う便利な機能を初心者向けに解説最初から用意されている便利な機能を使いこなすことで、より効率的なデータ処理プログラムが書けるようになります。

文字化けを一発で直すmb_convert_variablesの活用

ルールの違いが分かれば、あとは変換してあげるだけで解決しますよ。

PHPには、文字のルールを変換するためのmb_convert_variablesという強力な道具が用意されています。

これを使えば、配列に入ったデータをまとめて一気にUTF-8に変換できます。

使い方の手順は以下の通りです。

  • 普段通りにfgetcsvでデータを読み込む
  • 読み込んだ配列をmb_convert_variablesに渡す
  • 変換元のルールと変換先のルールを指定する
専用の関数があるなら、難しく考えなくてよさそうだね。

実際のコードはこんな感じです。

$file = fopen('data.csv', 'r');
while ($row = fgetcsv($file)) {
    mb_convert_variables('UTF-8', 'SJIS-win', $row);
    var_dump($row);
}
fclose($file);
SJIS-winを指定するのがWindowsで作ったCSVを読むコツです

これで、日本語もしっかりとキレイに表示されるようになります。

よくある疑問を解決するQandA

空っぽの行が含まれているときはどうすればいいのかな?

CSVファイルの中に空行があると、エラーになったり余計なデータが入ったりすることがありますよね。

そんなときは、if文を使って中身をチェックするのが一番簡単です。

読み込んだデータが空でない場合だけ処理をするように工夫しましょう。

よくある質問とその答えをまとめました。

  • 空の行を飛ばすには?:配列の最初の要素がnullでないかif文で確認します
  • カンマ以外の区切り文字は使える?:fgetcsvの引数でタブなどを指定できます
  • 大量のデータを読むと遅い?:SplFileObjectという別の便利な道具を使うと速くなります
ちょっとした工夫で、プログラムはもっと便利で賢くなりますよ。
まずは基本をマスターしてから応用に進むのがおすすめです

エラーが出たときは、一つ一つのデータがどうなっているか確認してみてくださいね。

プログラミングをもっと楽しく学ぶためのおすすめスクール

独学だとエラーが出たときに誰にも聞けなくて辛いな。

プログラミングの学習を進めていると、一人では解決できない壁にぶつかることがたくさんあります。

そんなときは、プロの講師に質問できる環境を作ることが上達の最短ルートです。

わからないところで何日も悩むより、サクッと聞いて次に進むほうがモチベーションも保てますよね。

おすすめのプログラミングスクールは以下の通りです。

  • DMM WEBCAMP 学習コース
  • Skill Hacks
  • CodeCamp
自分に合ったスクールを選んで、楽しくスキルアップしましょう。
無料体験やカウンセリングを利用して雰囲気を確かめるのがコツです

プロのサポートを受ければ、一人で悩む時間はぐっと減りますよ。

転職保証付きプログラミングスクール DMM WEBCAMP
Skill Hacks
CodeCamp

PHPでCSVを読み込む方法のまとめ

今日学んだことをしっかりおさらいしておきましょう。

PHPでCSVを扱うのは、基本の関数と文字化け対策さえ知っていれば怖くありません。

fgetcsvを使って一行ずつデータを読み込み、mb_convert_variablesで文字のルールをUTF-8に変換するだけです。

たったこれだけの工夫で、どんなデータも自由に扱えるようになりますよ。

まずは簡単なCSVファイルを作って、実際にコードを動かしてみましょう
なんだか私にもできそうな気がしてきたよ。早速パソコンで試してみるね。

転職保証付きプログラミングスクール DMM WEBCAMP
Skill Hacks
CodeCamp

PHPをはじめとするプログラミングスキルを基礎から実務レベルまで効率よく習得したい方は、以下のスクール比較もぜひ参考にしてみてください。プログラミングスクールおすすめ比較|初心者が最短でスキル習得できる選び方とは?疑問点をすぐに質問できる環境を選ぶことで、挫折せずに着実にスキルアップできます。

WordPressテーマ「SIMPLE」

simple

「SIMPLE」は、シンプルなデザインと多彩な機能を兼ね備えたオリジナルWordPressテーマです。

無料:WordPress ブログの初期設定チェックリスト
28 の設定を 1 枚にまとめた PDF と、5 日間のミニ講座をメールでお届けします。

LINEでお知らせ

「SIMPLEの最新情報」

新機能やアップデートのお知らせを、LINEで受け取れます。

友だち追加

この記事を書いた人

マルユメ

元社畜。ブラック企業で5年間鬼労働して1000万貯金→退職。27歳。WordPressテーマを自作。ブログを4つ運営中。

RELATED POSTS

COMMENT FORM

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です