PHPでCSV等のファイル読み込み時、改行が認識されなく、1行のみで終わってしまう時の対処法。
改行コードは、LF、 CR、 LF+CRと3種類存在しますが、
改行コード「CR」で保存されたCSVファイルは、ファイル読み込み時、改行コードと認識されない場合があります。
これは、PHPのデフォルト設定では、CRは改行扱いされない設定になっている為で、対処法としては以下の通り。
- CSVファイルの改行コードを「LF」または「LF+CR」に変換して保存しなおす。
- PHPの設定で「CRも改行扱いしてね」と設定してあげる。
両方やる必要はなく、どちらか1つでOKです。
以下は、CRも改行扱いする設定です。デフォルトでは、falseになっているのでtrueにしてあげます。
ini_set('auto_detect_line_endings',true);
※ EXCELの別名保存で、「CSV UTF-8(コンマ区切り)(.csv)」で保存すると、改行コードがCRになるようです。
コメント