web-dev-qa-db-ja.com

テキストエリアの改行を保持

テキストエリアを持つフォームがあり、コンテンツを出力するときにユーザーが入力した改行を保持したい。

たとえば、textareaに書き込む場合:

ここに文があります。ここに別のものがあります。ここにもう1つあります。

これは新しい段落です。これが新しい文です。ここに別のものがあります。

同じ出力とnotが必要です:

ここに文があります。ここに別のものがあります。ここにもう1つあります。これは新しい段落です。これが新しい文です。ここに別のものがあります。

どうすれば改行を保持できますか?

46
Simon M.

通常、追加する必要があるのは

  • white-space: pre-line;単一の空白にトリミングされた空白または

  • white-space: pre-wrap;すべての空白を保持

テキストを改行でレンダリングする要素のスタイル(CSS)に。

103
Vaidotas Pocius

ユーザーが入力した改行areが保持され、htmlもphpも単にドロップしたり変更したりしません。ただし、HTMLマークアップは、視覚化のためにレンダリングされる場合、改行をコード化するdifferentの方法を使用します。 veryの理由があります。したがって、あなたがしなければならないことは、既存の改行をhtmlスタイルの改行に「変換」することです。

その方法は、作業している環境によって異なります。一般に、_\n_のような改行コードを_<br>_タグに変換する必要があります。 phpスクリプト言語は、たとえば次のような関数を提供します:nl2br()

ただし、注意してください:これは、レンダリングがHTMLマークアップとしてのテキストの場合にのみ適用されます。これはnotを適用します。たとえば、テキストをフォーム内のtextareaに再度出力して、たとえば変更できるようにする場合です。その場合、元の改行を受け取ったとおりに保持する必要があります。

したがって、通常行うことは、変更されていないテキスト入力を受信した状態で保存することです。そのテキストをクライアントに再度出力するとき、たとえば、以前にテキストを保存したデータベースからテキストを読み取った後、テキストがどのように表示されるかを知っています。それは、既存の改行をそのまま翻訳するか、そのままにしておくときです。

couldまた、改行を含む変更されていないテキストを_<pre>...</pre>_タグでエンコードします。これは、たとえば、HTMLページでソースコードを表示するときに行われます。

6
arkascha

Java文字列からファイルへの復帰文字を保持したい場合。各ブレークライン文字を置き換えるだけです(Javaで認識されます:\ n)次のステートメントに従って:tempQuery = tempQuery.replaceAll( "\ n"、 "\ r\n");

以下にコード例を示します。

    // Action Listener
    orderButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            // When Execute button is pressed
            String tempQuery = textArea.getText();
            tempQuery = tempQuery.replaceAll("\n", "\r\n");
            try (PrintStream out = new PrintStream(new FileOutputStream("C:/Temp/tempQuery.html"))) {
                out.print(tempQuery);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(tempQuery);
        }

    });
0
QA Specialist

出力はそのままtextareaに保持します。あなたは、入力文字列にtextareaを追加するstring(write to file)という文字列出力として入力を受け取ります。

for eg.
<?php
$txt = $_POST["inputstr"];
$txt1 = "<textarea>". $txt ."</textarea>";
$file = fopen("file.html","a+");
fwrite($file, $txt1);
fclose($file);
?>
0
awadhesh