<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
。它将擦除除一个以外的所有空格。
所有空间都去了哪里,为什么会这样?
答案 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无关。例如:
<p> Hello world!</p>
<p style="white-space: pre"> Hello world!</p>
&#13;
答案 2 :(得分:1)
您需要将空格转换为html实体
$thread = str_replace(' ', ' ', $_POST['thread'])
现在echo 'test:'.$thread
将输出带有空格的文字。
答案 3 :(得分:0)
这是关于HTML的最基本的事情。任何空格都是等效的,并被视为单个空格。
您不应该使用多个空格来尝试在HTML中布局文本(例如,您可以在Word中执行此操作)。你应该使用像margin或padding这样的CSS样式。
建议用&amp;更换空间的答案NBSP;是正确的,但他们会让你走错了路。