0

編集: 私の問題は単純化されており、改行文字を完全に削除できないことに要約されていると思います。

試し$new_content = str_replace("\n", '<br/>', $_POST["new_content"]); ました:これが機能しない理由はわかりませんが、テキストファイルを調べると、次のような不思議な改行が残っています。

event:|:Test:|:Line 1
<br/>Line 2:|:September 29th, 2012

元の質問:

テキストフィールドと非常に単純な「データベース」を備えたフォームがあります。これは、送信されたフォームデータを保存する.txtファイルです。これは、今気付いた1つの大きな問題を除けばすべてうまく機能します。ユーザーがEnter/Returnキーを押してテキストボックスの新しい行に移動すると、結果の文字列が何であれ、新しい行がデータベース内の別の行を表すテキストファイルが台無しになります。

たとえば、テキストファイルが通常どのように表示されるかを次に示します。

type:|:heading:|:content:|:date
event:|:Big Event 2012:|:More info and booking details.:|:September 29th, 2012
event:|:Website relaunch:|:Keep your eyes pealed.:|:September 25th, 2012

ここで、フォームに入力してテキストボックスのリターンキーを押して新しい段落を開始すると、テキストファイルは次のようになります。

type:|:heading:|:content:|:date
event:|:Test:|:paragraph 1
paragraph 2:|:September 29th, 2012
event:|:Website relaunch:|:Keep your eyes pealed.:|:September 25th, 2012

ご覧のとおり、文字列の結果、データベースで新しい行が使用されていますが、私は次のようなものを期待/望んでいます。

event:|:Test:|:paragraph 1 \n paragraph 2 :|:September 29th, 2012 //or
event:|:Test:|:paragraph 1 <br/> paragraph 2 :|:September 29th, 2012

私はオンラインで同様の質問を探してみましたが、すべての解決策は次のようなものを使用することを指していましたが、それは次のようなnl2br($_POST["new_content"]);形式のテキストファイルを生成するようです:

type:|:heading:|:content:|:date
event:|:Test:|:paragraph 1<br />

paragraph 2:|:September 29th, 2012
event:|:Website relaunch:|:Keep your eyes pealed.:|:September 25th, 2012

元の問題がまだ続く場合。$_POST["new_content"]誰かがこれが起こる理由を説明できますか、またはテキストファイルに保存する前に取得した文字列をフォーマットする方法について何か提案がありますか?助けていただければ幸いです!

4

4 に答える 4

1

試す

$_POST["new_content"] = str_replace("\n", '<br/>', $_POST["new_content"]);

編集:

次のことも試すことができます。

$_POST["new_content"] = ( preg_replace( '/\s+/', '<br/>', $_POST["new_content"] ) ); 
于 2012-09-29T12:56:56.597 に答える
1

あなたは特殊文字の根本的な問題を抱えています。改行は、ファイル形式の特殊文字です。2つの選択肢があります。保存されたコンテンツで改行を許可しないか\n、ファイルに書き込む前に改行を置き換えるなど、何らかの方法で改行をエスケープ/エンコードします。それはまた、それが特殊文字であることを意味するので、テキストで発生する可能性のある実際の文字をなんとかし\nてエスケープする必要があります。\n

特殊文字とエスケープに関するより一般的な情報については、http://kunststube.net/escapismを参照してください。ファイル形式について独自のルールを考え出すか、XMLなどの確立された形式を採用する必要があります。

于 2012-09-29T13:07:47.257 に答える
1

新しいコンテンツをtxtファイルに保存するために、処理ファイルでこれを試してください。@ TheShiftExchange Answerは、txtファイルに保存する前に、可変コンテンツに改行を追加するようなものです。

$file= 'log.txt';
$content= preg_replace('/\s+/', '', $_POST['new_content']);
$content.= "\n";
$fh= fopen($file, 'a+');
fwrite($fh, $content);
fclose($fh);
$all_contents= file_get_contents($file);
echo nl2br($all_contents);
于 2012-09-29T15:29:23.620 に答える
1

nl2brのドキュメントコメントにある回答:

strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />'));

ソース: http: //php.net/manual/en/function.nl2br.php#91828

于 2012-09-29T18:03:57.130 に答える