HTML 发布删除换行符

vas*_*123 5 html textarea

我有一个非常简单的 html/php 代码。它只有一个文本区域和一个发送按钮。

在 textarea 中,我有一个文本,在文本开头有 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>
Run Code Online (Sandbox Code Playgroud)

JJJ*_*JJJ 4

浏览器会忽略标记内的第一个和最后一个换行符<textarea>。这是因为如果您不希望有任何额外的换行符,那么您编写的 HTML 如下所示:

<textarea>
Textarea content, all in one line.
</textarea>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,简单的解决方案是在打印文本区域内容之前添加一个换行符。

<textarea style="width: 200px; height: 150px;" name="message">
<?php echo $_POST["message"]; ?>
</textarea>
Run Code Online (Sandbox Code Playgroud)

另请注意,您不需要\r\n. 只要\n是就够了。