表格删除空格

时间:2015-01-17 12:03:10

标签: php html forms

<form action="class.php" method="POST">
  thread link:
  <br>
  <input type="text" name="thread">
  <input type="submit" value="Submit">
</form>

我有这个简单的形式。输入以许多空格开头的字符串,类似

 "           test"

我的PHP代码

echo 'test:'.$_POST['thread'];

将打印test: test。它将擦除除一个以外的所有空格。

所有空间都去了哪里,为什么会这样?

4 个答案:

答案 0 :(得分:4)

HTMLs的规范告诉,渲染器删除多个空格。这在某些情况下很有用。为避免这种情况,您可以将此字段的内容放在<pre></pre>块中。像那样:

echo '<pre>test:'.$_POST['thread'].'</pre>';

答案 1 :(得分:2)

表单不会删除空格。你的PHP代码也没有。这些空格仍然存在于生成的HTML文档中(由PHP代码生成以响应表单提交)。它们只是作为单个空间呈现,因为在大多数情况下,HTML内容中的任何空格字符序列都等同于单个空格。这在CSS 2.1规范中定义,在white-space属性的描述中。

因此,为了防止空间崩溃,简单的方法是在CSS中设置white-space: pre。它还可以防止内容中的换行符,但这可能不是问题。使用HTML中的pre元素会导致此设置,但它也会将字体系列设置为等宽字体。

所以这只是HTML和CSS的问题,与PHP无关。例如:

&#13;
&#13;
<p>         Hello world!</p>
<p style="white-space: pre">         Hello world!</p>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您需要将空格转换为html实体

  $thread =  str_replace(' ', '&nbsp;', $_POST['thread'])

现在echo 'test:'.$thread将输出带有空格的文字。

答案 3 :(得分:0)

这是关于HTML的最基本的事情。任何空格都是等效的,并被视为单个空格。

您不应该使用多个空格来尝试在HTML中布局文本(例如,您可以在Word中执行此操作)。你应该使用像margin或padding这样的CSS样式。

建议用&amp;更换空间的答案NBSP;是正确的,但他们会让你走错了路。