【PHP】ファイル読み込み時、CSVファイルの改行が認識されない対処法【2026年最新版】

スポンサーリンク

PHPでCSV等のファイル読み込み時、改行が認識されなく、1行のみで終わってしまう時の対処法。

改行コードは、LF、 CR、 LF+CRと3種類存在しますが、
改行コード「CR」で保存されたCSVファイルは、ファイル読み込み時、改行コードと認識されない場合があります。

これは、PHPのデフォルト設定では、CRは改行扱いされない設定になっている為で、対処法としては以下の通り。

  1. CSVファイルの改行コードを「LF」または「LF+CR」に変換して保存しなおす。
  2. PHPの設定で「CRも改行扱いしてね」と設定してあげる。

両方やる必要はなく、どちらか1つでOKです。
以下は、CRも改行扱いする設定です。デフォルトでは、falseになっているのでtrueにしてあげます。

ini_set('auto_detect_line_endings',true);
【2026年8月更新】この`auto_detect_line_endings`設定は、PHP 8.1以降で非推奨(deprecated)となっており、使用するとE_DEPRECATED警告が出るようになりました。将来のPHP 9.0では完全に削除される予定のため、恒久的な対策としては上記の「1. CSVファイルの改行コードをLFまたはLF+CRに変換して保存しなおす」方法を優先してください。

※ EXCELの別名保存で、「CSV UTF-8(コンマ区切り)(.csv)」で保存すると、改行コードがCRになるようです。

コメント

タイトルとURLをコピーしました