1

我的输入 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

4 回答 4

3

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

我建议你使用<pre>标签,它不仅可以保存新行(如 php's nl2br()),还可以保留whitespaces

在打印来自未知来源的输入时,不要忘记去除允许代码注入的字符。

使用<pre>

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

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

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

注意:

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

于 2013-10-11T08:17:05.207 回答
1

显示换行符使用nl2br()

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

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

于 2013-10-11T08:13:47.297 回答
0

改变

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

进入

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

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

于 2014-09-13T20:02:24.203 回答
-1

尝试这个...

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

htmlentities()转换您的 HTML。

于 2013-12-24T10:28:31.747 回答