2009-05-15 6 views
1

ローカルのテキストファイル上でfile_get_contents()によって取得されるか、http://site.com/338383.txtなどのURLから取得される文字列を受け入れることができる関数を作成しています。PHPでファイルの内容を分解するには rまたは nを使うべきですか?

ファイルは、ファイル内の各項目がそれぞれの行にあるタブ別ファイルになります。 \nまたは\rexplode()を文字列として使用し、各行の配列を取得する方が良いですか?

私はいくつかのケースでは\nが動作しないことに気付きました。私はいつも働く一貫した方法が欲しいです。何かご意見は?

答えて

5

file()を使用すると、ファイルの内容を個々の行で配列として取得できます。

+0

ありがとう、ちょうど私が望んだ –

0

preg_split()を使用して/ \ n \ r | \ n | \ r /に展開し、次に各項目をtrim()で末尾の空白が残っていないことを確認してください(該当する場合)。

2

duckyflipは、file()関数を使用してファイル行の配列を取得できます。ただし、(未知の理由で)依然として展開する必要がある場合は、クロスプラットフォームに準拠しているため、PHP定数PHP_EOLを '\ n'の代わりに使用する必要があります。

+1

しかし、あなたはまだ別のプラットフォームで書かれたファイルを読むことができませんでしたか?その場合、サーバ上のPHP_EOLはファイル内のPHP_EOLと必ずしも一致しませんか? –

1

newlineは、さまざまな "text/plain"エンコーディングとプラットフォームに対して異なる定義がされています。クイックダーティな解決法は、おそらくsplitと正規表現 "\ r \ n | \ r | \ n"を使用することですが、いくつかのユニコードファイルを壊してしまい、 "コンテキスト"の意味がありません。私。 LF(\ n)がEOLマーカーとして使用されているファイルがあり、そこにいくつかのCRが保存されていたら、CRも分割されます。

関連する問題