質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

10881閲覧

csvを生成しているPHPで、正しく改行コードが生成できません。

queens

総合スコア37

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2014/09/17 17:00

下のコードを使って、csvファイルを生成しています。

lang

1$file = file("test.csv"); 2header('Content-type: text/csv'); 3header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"'); 4foreach($contents as $content){ 5 print $file; 6}

$file変数は、コンマで区切られて“\n”で閉じられている新しい行を生成する行を含んでいます。

csvでファイルを開いてみたときは問題ないのですが、ファイルを使用して外部プログラムへインポートしようとすると、行の終わりの文字(\n)が認識されず、一文の長いテキストとみなされます。

ファイルのコンテンツをメモ帳で見てみると、行の終わりの文字(\n)が、文字コード0x7Fのような小さな長方形になっています。

再びファイルを開いてエクセルで保存した場合は、その文字が取り除かれて前の行の行末文字で置き換えられるのでインポートできます。

PHPでどの文字を生成すれば、メモ帳が有意な行末文字として認識してくれますか? (\n)は明らかに機能していません……。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Windowsのメモ帳ではLF("\n")は改行文字として認識しないので、CR+LF("\r\n")にする必要があります。
CSVファイルとしては後追いでRFC化されたものでは、改行文字はCR+LFとされているようです。
ただ、CSVファイルをメモ帳で開いて、表示上改行されるかどうかは、CSVファイルの正当性とは何の関係もないかと思いますが。

投稿2014/09/26 04:32

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

queens

2014/09/30 01:37

回答ありがとうございました!
TaMaMhyu

2014/09/30 02:30

メモ帳は、CSVファイルを開くためのアプリケーションではないことに留意してください。 メモ帳で見て改行されているからと言って、CSVファイルとして正しいとは限りません。 CSVファイルを開くためのアプリケーションとしては、WindowsではSmoothCSVなどがあります。
guest

0

"\r\n" (ダブルクオーテーション)で囲みましょう。

これは、復帰改行とラインフィードを表すアスキー文字です。

必要なものはシステムごとに異なります。
・ラインフィードのみ:Unix寄りのシステムはほとんど
・改行復帰とラインフィード:DESとMO-DOSベースのシステム
・改行復帰のみ:初期のApple/Mac OS
なので、あなたが行っている方法ではUnixのシステムでしか改行されませんよ。
Wikipediaにも詳しい例が載っていますよ。

http://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89

投稿2014/09/19 02:30

hogehogehoge

総合スコア165

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問