PHP Macで作成したcsvを取り込む

  • このエントリーをはてなブックマークに追加
  • Pocket

Macで作成したcsvファイル等の改行コードをPHPが認識できなくて、ファイルを読み込んでも「1行」だとして処理する。
大体のクライアントはwin環境が多いので忘れがちな対応だけども、php.iniに設定するだけで解決できるのでメモ。

改行コード

各OSの改行コードがこちら。

OS 改行コード
Windows \r\n (CR + LF)
Mac OS 9まで \r (CR)
Mac OS Xから \n (LF)
Linux \n (LF)

Macがパターン分けてきてる・・・
\n (LF) があればPHPは改行だと判断してくれるっぽいので、
とりいそぎ問題なのはMac OS 9までの \r (CR)。

PHPでCRと戦う

CRをやつける方法は以下の2種類。

  • php.ini の auto_detect_line_endingsを有効にする

  • file_get_contentsでファイルを読み込んで改行コードを問答無用で変換する

iniを操作できる環境なら前者、触れないなら後者。
ini_set() を使うという手もある。

php.ini 設定

ini に auto_detect_line_endingsという値がるのでこれを有効にする。
デフォルト OFF でコメントアウトまでされてる。

ちなみに php.ini だけでなく http.conf とか .htaccess でも行けるらしい。
iniとは書き方がちょっと違うので注意。
僕は動作確認まで至ってないです。。。

iniで十分だよね。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*