アプリ版:「スタンプのみでお礼する」機能のリリースについて

結論から言いますと、
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");
?>

A 回答 (2件)

下記の行を


$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とかを使わずにエクセルまたはエディタ等で開く時)、
大文字に置き換えられてしまってるので、そのまま大文字で表示されてしまいます。

エクセルで開いた時に同一セル内で改行を使いのであれば、
やりかたは分かりません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/10 00:36

"で囲ってください


$line .= '"' . str_replace('"', '""', $_POST['message']) . '"' . "\t";

CSVじゃなくてTSV?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/10 00:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!