2013-05-08 94 views
-1

这是我的代码:为什么printf空格填充只允许一个空格?

<?php 
$str1 = "Hello"; 
printf("[%99s]",$str1); 
?> 

我期望它输出94米的空间作为填充以满足最小长度。为什么它只在字符串的右边输出1个空格?

+0

我得到这个从您的代码:'[<94 spaces>你好]'。减去一个。 – 2013-05-08 08:45:40

+0

为我更新了我的答案。 – 2013-05-08 08:49:49

回答

0

如果要输出到网页,HTML不会看到空格(如果您检查源代码,可能存在94个空格)。你必须填写'&nbsp;'

试试这个:

echo str_replace(' ', '&nbsp;', sprintf("[%-99s]\n", $str1)); 
+0

我应该澄清一下,我的问题不在于对齐。我得到的输出是 [你好],我期望[...这里有很多空格...你好] – user1537688 2013-05-08 08:36:08

+0

如果你要输出到网页,HTML不会看到空格(如果你检查源代码, 94个空间可能存在)。您必须使用'sprintf',然后将''转换为' '。 – 2013-05-08 08:38:36

+0

除非编码,否则浏览器会消除多个空格。尝试使用 而不是空格。 – karmafunk 2013-05-08 08:39:59

0

你的代码添加空格正确的金额。你的问题最可能的只是你在浏览器而不是源代码中查看它的表示。在HTML中,不止一个空间将被合并为一个。

无论是查看浏览器的源代码的输出或使用:

<pre> 
<?php 
$str1 = "Hello"; 
printf("[%99s]",$str1); 
?> 
</pre> 
+0

我明白了,为什么浏览器如果这是一个有效的PHP命令,这是一个实际的事情? – user1537688 2013-05-08 08:38:07

+0

这很有道理。 HTML代码通常分成几行,使用缩进等。在浏览器的表示中不会需要所有空白。对于这种情况,HTML提供' '和'
'。 – str 2013-05-08 08:41:02