1

PHPサイトと、サイトのDBを更新するために実行されるcronジョブがあります。cronは、サードパーティによってアップロードされたCSVファイルを読み取ります。最近、このcronジョブは正しく機能しなくなりました。調査の結果、問題がCSVファイルにあることがわかりました。問題は、CSVの改行文字が標準の「\n」から古いASCII「^M」に変更され、PHPがこれを新しい行として認識しないように見えるため、CSVを複数行として表示する代わりに、それは1行の情報として見ています。私はこの違いをコマンドラインテキストアプリlessとvimでしか見ることができませんでした。PHPにこれらの改行文字を認識させる方法を知っている人はいますか?

例として、間違ったCSVファイルはvimでは次のようになります。

Heading 1,Heading 2,Heading 3,^MInfo 1-1,Info 1-2,Info 1-3,^MInfo 2-1,Info 2-2,Info 2-3,^M^M

古い(正しい)バージョンはvimで次のように表示されます:

Heading 1,Heading 2,Heading 3,
Info 1-1,Info 1-2,Info 1-3,
Info 2-1,Info 2-2.Info 2-3,
4

2 に答える 2

2

auto_detect_line_endingsオプションを適切に設定してください。

于 2012-04-30T15:41:13.370 に答える
0

コードを変更して^Mを検索したり、^Mを\nに置き換えたりすることはできませんか?

str_replace("^M", "\n", $input);
于 2012-04-30T15:42:14.200 に答える