我有一个非常简单的 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)
浏览器会忽略标记内的第一个和最后一个换行符<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是就够了。