额外的空格和换行符PHP自动删除TEXTAREA

时间:2013-10-11 08:09:37

标签: php html textarea

输入php文件的代码如下。

<!DOCTYPE html>
<html>
  <body>
    <form name="input" action="welcome.php" method="post">
      Comment: <textarea name="input" rows="5" cols="40"></textarea>
      <input type="submit" value="Submit">
    </form> 
  </body>
</html>

输出代码如下:

<html>
  <body>
    Welcome <?php $a=$_POST["input"]; echo $a; ?><br>
  </body>
</html>

当输入任何带有额外空格和换行符的内容时,它会自动删除。例如:

当我输入时:

abcd
cda xyzb

输出是:

Welcome abcd cda xyzb

4 个答案:

答案 0 :(得分:2)

这是因为新行字符表示为\r\n,在源代码中您将看到新行。如果在HTML中跟随另一个空格,则空格会被截断。

我建议您使用<pre>标记,不仅可以保存新行(如php的nl2br()),还可以保留空格

使用<pre>

<html>
<body>
<pre class="yourStyleForThisPreFormattedText">
Welcome <?php $a = $_POST["input"]; 
echo $a; ?>
</pre>
</body>
</html>

使用特殊字符(&nbsp;)和PHP函数:

<html>
<body>
Welcome <?php $a = nl2br(str_replace(' ', '&nbsp;', $_POST["input"]), true); 
echo $a; ?>
</body>
</html>

注意:

对于HTML4和HTML5使用nl2br($str, true);,对于XHTML4使用nl2br($str); - 区别在于输出:<br><br />。见http://php.net/nl2br

答案 1 :(得分:0)

要显示换行符,请使用nl2br()

<html>
    <body>
        Welcome <?php $a = nl2br($_POST["input"]); 
        echo $a; ?><br>
    </body>
</html>

您还可以添加<pre>标记以显示预先格式化的文本(所有空格)。

答案 2 :(得分:0)

更改

<textarea name="input" rows="5" cols="40"></textarea>

<textarea name="input" rows="5" cols="40" wrap="virtual"></textarea>

你也可以使用wrap:off,hard,soft,physical

答案 3 :(得分:-1)

试试这个......

Welcome <?php echo htmlentities($_POST['input']); ?>

htmlentities()转换您的HTML。