8

このコードを使用して、CSVファイルから列数を取得します。

$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
    $this->number_of_columns = count($dataset);
}

ファイルがExcelforMac 2011でエクスポートされない限り、改行文字は 認識されないClassic Mac(CR)であるため、正常に機能します。fgetcsv

代替テキスト

改行をClassicMac(CR)からUnix(LR)に手動で変更すると機能しますが、これを自動化する必要があります。

fgetcsvClassic Mac(CR)の改行文字を認識させるにはどうすればよいですか?

4

2 に答える 2

20

マニュアルから:

注:Macintoshコンピューター上またはMacintoshコンピューターで作成されたファイルを読み取るときに、PHPが行末を正しく認識しない場合は、auto_detect_line_endingsランタイム構成オプションを有効にすると問題が解決する場合があります。

于 2011-01-21T14:27:17.607 に答える
1

Saulの答えがうまくいかない場合は、ファイルを一度に読み込む簡単なスクリプトを作成し、すべての\rを\nに置き換え、結果を新しいファイルにダンプしてから、その新しいファイルをfgetcsvします。

これらの用語がタイプライターを使用していた時代から来ているのは面白いと思います。
\n= Line Feed(LF)-紙を1行進めます。
\ r =キャリッジリターン(CR)-キャリッジをタイプライターの左側に戻します。

于 2011-01-21T14:35:33.787 に答える