fgetcsvで日本語が連続の場合うまく配列に入れられない。 - PHPプロ!Q&A掲示板

4931

  • 募集中!! 0P

fgetcsvで日本語が連続の場合うまく配列に入れられない。

質問日時 / 2018年3月22日 12:24    回答数 / 1件

Questioner:  yuuhalca  このエントリーをはてなブックマークに追加 

キーワード / fgetcsv    csv   

はじめまして。
csvを読み込み入れつとして読み込みたいのですが、うまくいきません。
環境:
WindowsServer2008R2
PHP7.1.15
Apache2.4.29

php
  1. $filepath = "shurihyou.csv";
  2. $fp = fopen($filepath, 'r');
  3. if( $fp ){
  4. while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
  5. $csv[] = $data;
  6. }
  7. fclose($fp);

csv
  1. 0,田中,こんにちは,02
  2. 1,山田,こんばんは,01
  3. 2,鈴木,,01

上記のような場合、$csvの中身がおかしくなります。

例:
$csv[0][1]の中身が
田中
ではなく、
田中,こんにちは
になったり
$csv[2][1]の中身が
鈴木
ではなく
鈴木,

というように、カンマで正しく区切り、配列に格納することができません。
日本語の連続や、日本語のあとが空白の場合おかしくなります。

windows10で、最新のXampp環境で実行すると問題が無いです。

お手数ですが、原因がもしわかる方がおられましたら、ご教示ください。
よろしくお願いいします。


ツリー一覧

┗A01shimixロケールの設定はどうなっていますか? https://ww

回答一覧

並び替え:

A01
answerershimix [3月22日 14:28] (最終編集:3月22日 14:33)

ロケールの設定はどうなっていますか?

https://www.softel.co.jp/blogs/tech/archives/2331
https://qiita.com/uedatakeshi/items/e33765c6b3e26a57c237



(蛇足)
php7なら(というかphp5.1以降なら)SplFileObjectのfgetcsvを使った方が速くないですかね
http://php.net/manual/ja/splfileobject.fgetcsv.php

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)