5

私は本当に単純なhtml / phpコードを持っています。テキストエリアと送信ボタンしかありません。

テキストエリアには、テキストの先頭に 3 つの改行があるテキストがあります。それらの改行が必要です。

あと、フォームを送信すると、なぜか文頭の改行がチョップ1になってしまいます。そして、もう一度送信すると、改行が削除されますが、コンテンツの先頭はテキストではありません。

なぜそれが起こっているのですか?FF、Chrome、Safari、Oprea、IEで試してみましたが、同じ結果でした。

次のコードでテストできます。

<?php
if (empty($_POST["operation"])) {
    //Init the textarea value if form not submitted
    $_POST["message"] = "\r\n\r\n\r\nThis is\r\na multiline text";
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Multiline test</title>
    <meta charset="UTF-8" />
</head>
<body>
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
    <textarea style="width: 200px; height: 150px;" name="message"><?php echo $_POST["message"]; ?></textarea>
    <input type="submit" value="send" />
    <input type="hidden" name="operation" value="send" />
    </form>
</body>

4

2 に答える 2

4

<textarea>ブラウザーは、タグ内の最初と最後の改行を無視します。これは、次のように HTML を記述した場合に余分な改行が必要ないためです。

<textarea>
Textarea content, all in one line.
</textarea>

この場合の簡単な解決策は、テキストエリアの内容を印刷する前に改行を 1 つ追加することです。

<textarea style="width: 200px; height: 150px;" name="message">
<?php echo $_POST["message"]; ?>
</textarea>

も必要ないことに注意してください\r\n。だけ\nで十分です。

于 2013-05-29T10:49:24.077 に答える