2012-05-06 13 views
3

私はテキストファイルでチャットルームを作っています。非常にシンプルですが、サーバーにダンパーを付けるのは嫌です。いずれかの方法。私は、メッセージを作成しようとすると、それはこのPHPファイルは新しい行で書き込む

Alan,5/6/12,message<br>Joe,5/6/12,hello<br> 

などの同じ行に追加メッセージを置く私はそれが

Alan,5/6/12,message 
Joe,5/6/12,hello 

ようにしたいと思いますこれは私が持っているものです。

$total = 'Alan,5/6/12,hello joe<br>\r\n'; 
$fn = "messages.txt"; 
$file = fopen($fn,"a"); 
fwrite($fn,$total); 
fclose($fn); 

ありがとうございます。

答えて

5
$total = 'Alan,5/6/12,hello joe<br>\r\n'; 

が働いているだろう二重引用符を使用します。

$total = "Alan,5/6/12,hello joe<br>\r\n"; 
     ^--       ^-- 

単一引用符で囲まれた文字列は改行/改行のようなメタキャラクタを解釈しませんし、すべての単一引用符で囲まれたバージョンが出力にリテラルrn文字を入れているん。

+0

+1改行にもこの規則が適用されていることに気づいていませんでした。素晴らしいことを知っている。 – Sampson

+0

単一引用符で囲まれた有効なメタ文字は、一重引用符とバックスラッシュだけです。他のものはそのままリテラル文字として渡されます。 –

2

は終わりPHP_EOLを使用してみてください:

$total = 'Alan,5/6/12,hello joe<br>' . PHP_EOL; 
+4

+1これは正しい方法ですが、引用符で囲まれていれば(引用符で囲まれた文字は一重引用符で囲まれた文字列の中では機能しないため)http://php.net/manual/ en/language.types.string.php)) – jli

+0

私はこれを試してみましたが、それはまだ1行にすべて入れています。私は再び "
"で各行を分割することができましたが、私はちょうどこれを行う方法があると考えました。 – AlanPHP

+0

@ AlanPHP 1行どこですか?ページ上、またはソース内にありますか? – Sampson

0

あなたはCSVを書いているように見えるので、あなたがこのシンプルな操作を行うことができますあなたの場合

<? //PHP 5.4+ 
(new \SplFileObject('messages.txt', 'a'))->fputcsv([ 
    'Alan', //or $user 
    \date('c'), //or other date format 
    'message content', //or $message_content 
]); 
?> 
+0

これは同じことをやっています。すべて1行。 – AlanPHP

+0

メモ帳でmessages.txtを開きますか?ワードパッドのような別のテキストエディタを試してみてください。 –

+0

messages.txtを出力するファイルは、各行が異なるメッセージである必要があります。 – AlanPHP

関連する問題