2012-10-16 18 views
9

のように1つの文字列にテキストファイルグルー結果で出力を保存私のPHPのフォーム:PHP出力の新ライン

Name1Email1The Message1Name2Email2The Message2Name3Email3The Message3Name4Email4The Message4

しかし、私は、スペースを必要とする、および/または改行。私は正常にPHPを使用しないので、私はそれを取得しません。私はウェブ上で答えを見つけられませんでした。ここでもいくつかのQ/Aを読みましたが、これは私を助けませんでした。

フォーム:

<form action="mailer.php?savedata=1" method="post"> 
Your Name: <input type="text" name="name"><br> 
Your Email: <input type="text" name="email"><br> 
Your Message:<br> <textarea name="message" rows="5" cols="30"></textarea><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

PHP

<?php 
$savedata = $_REQUEST['savedata']; 
if ($savedata == 1){ 
$data = $_POST['name']; 
$data .= $_POST['email']; 
$data .= $_POST['message']; 
$file = "YOURDATAFILE.txt"; 

$fp = fopen($file, "a") or die("Couldn't open $file for writing!"); 
fwrite($fp, $data) or die("Couldn't write values to file!"); 

fclose($fp); 
echo "Your Form has been Submitted!"; 

} 
?> 

答えて

17

他の回答の状態として、あなたは、各フィールドの後の行の文字の末尾に追加する必要があります。

異なるOSは異なる行末を使用するため、たとえば、 "\ n"はWindows上で新しい行として表示されないことがあります。 Mahdiが述べたように、Windowsスタイルの "\ r \ n"行末を使用するか、PHP_EOL定数を使用してサーバーに適切な行末が出力されるようにします。その場合、コードは

$data = $_POST['name'] . PHP_EOL; 
$data .= $_POST['email'] . PHP_EOL; 
$data .= $_POST['message'] . PHP_EOL; 
+0

ありがとうございます!私はあなたの答えは異なるOSの引数を選択します。 –

3

あなたは、新しい行を記述するために "\ n" を使用することができます。

$data = $_POST['name'] . "\n"; 
$data .= $_POST['email'] . "\n"; 
$data .= $_POST['message'] . "\n"; 

\ nは二重引用符で囲む必要があります。一重引用符で囲まれているとうまくいきません。

0

you'r $data変数に既に\n改行文字が含まれている必要があります。

2

は、私は通常Carriage ReturnNew Lineを兼ね備え:

$data = $_POST['name'] . "\r\n"; 
3

入力値を連結すると、改行はありません。リテラル"\n"または"\r\n"を使用して追加できます。文字列にそれらをすべて一緒に、あなたは以下のようなsprintf()を連結演算子を使用するか、使用することができます。私はまた、ファイルにデータを追加するFILE_APPENDフラグを付けてfile_put_contents()を使用して、コードのより多くの数行を保存

$data = sprintf("%s\n%s\n%s\n", $_POST['name'], $_POST['email'], $_POST['messge']); 
$file = "YOURDATAFILE.txt"; 
file_put_contents($file, $data, FILE_APPEND); 

-1

Webフォームを介してオンラインで提出されたデータを抽出し、そのテキストファイルに既に含まれている情報を上書きすることなく、Webサーバー上に配置されたテキストファイルに書き込もうとすると、タグ内に以下のコードを使用します。上記のHTMLコードは次のPHPコードと結合されている

<html> 
<body> 
<form action="" method=""> 
<input value="submit"> 
<div>Name: <input value=""></div> 
<div>email: <input value=""></div> 
...   ...   ... 
<div><button>Submit</button></div> 
</form> 
</body> 
</html> 

<?php 
$fileName = 'fdata.txt'; 
$fp = fopen('fdata.txt', 'a'); 
$savestring = $_POST['name'] . ',' . $_POST['email'] ; 
fwrite($fp, $savestring);    
fclose($fp); 
?> 

しかし、上記の二つのコードを一緒に一緒に追加され、弦されたデータにつながりますテキストファイル - 言い換えれば後続のWebフォームから抽出されたすべての新しいレコード(データセット)は、改行で始まりません(改行または改行はありません)。

ネット上で提案されているように、「\ r \ n」(二重引用符)を追加し、「PHP_EOL」(引用符なし)を「

」として使用しました。
$fp = fopen('fdata.txt', 'a', "\r\n"); 
$savestring = “\r\n” . PHP_EOL . ' ' . $_POST['name'] . ',' . $_POST['email'] . 
PHP_EOL; 

ただし、改行は全くありませんでした(私のウェブサーバーとデスクトップはWindowsを使用しています)。つまり、世界の何百万人ものユーザーの知識の中に実用的な解決策がなかったということです。パラメータ「a」は「\ r \ n」、「PHP_EOL」などをオーバーライドしているようです。