• ベストアンサー

textareaに改行を入れても、CSV上では一セルに収まる方法は?

結論から言いますと、 textareaに改行を入れると、CSVファイルが下段に移ってしまいます。 やりたいとこ textareaに改行を入れても、CSV上では一セルに収まってほしいです。 いろいろ調べたのですが、以下のどこを書き換えればよいか分からないんです。 初心者なため困っております。宜しくお願い致します。 △△△△△△△△△△△△△△△△ ファイル名:input.php ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ <html> <head> <title>インプット</title> </head> <body> <h1 style="background:#cccccc">(書き込み)</h1> <form method="POST" action="write.php"> お名前: <input type="text" name="name" size="20" maxlength="30" /><br /> メッセージ: <textarea name="message" rows="4" cols="40">ここに感想を記入してください。</textarea> <br /> <input type="submit" value="送信" /> </form> </body> </html> △△△△△△△△△△△△△△△△ ファイル名:write.php ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ <?php $file=fopen("good.csv","a"); flock($file,LOCK_EX); $line =date("Y年 m月 d日 H:i:s")."\t"; $line.=$_POST['name']."\t"; $line.=$_POST['message']."\t"; fputs($file,$line."\n"); flock($file,LOCK_UN); fclose($file); header("Location: input.php"); ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • honoka69
  • ベストアンサー率50% (6/12)
回答No.1

下記の行を $line.=$_POST['message']."\t"; ↓ $line.=ereg_replace ( "\r\n|\r|\n" , "" , $_POST['message'] )."\t"; こんな感じでどうでしょうか? 改行を抜いてるだけです。 もしくは改行を残したいなら、 $line.=ereg_replace ( "\r\n|\r|\n" , "¥n" , $_POST['name'] )."\t"; $line.=ereg_replace ( "\r\n|\r|\n" , "¥n" , $_POST['message'] )."\t"; と改行をとりあえず大文字に置き変えといて、呼び出す時に大文字¥nを 小文字\nに置き換えてあげれば、改行が使えると思います。 $messageにテキストエリアの文言が入ってるとしたら、呼び出し時に print ereg_replace ( "¥n" , "\n" , $message ); とすれば改行が反映されてると思います。 またはブラウザに表示するのであれば print ereg_replace ( "¥n" , "<br>" , $message ); で改行になると思います。 大文字に置き換えてCSVを直接開く場合は(PHPとかを使わずにエクセルまたはエディタ等で開く時)、 大文字に置き換えられてしまってるので、そのまま大文字で表示されてしまいます。 エクセルで開いた時に同一セル内で改行を使いのであれば、 やりかたは分かりません。

tonix
質問者

お礼

ありがとうございました。問題なく設定できました。

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

"で囲ってください $line .= '"' . str_replace('"', '""', $_POST['message']) . '"' . "\t"; CSVじゃなくてTSV?

tonix
質問者

お礼

TSVってなんでしょうか? でもいただいたスクリプトでちゃんとできましたありがとうございました。

関連するQ&A