这是我的代码:为什么printf空格填充只允许一个空格?
<?php
$str1 = "Hello";
printf("[%99s]",$str1);
?>
我期望它输出94米的空间作为填充以满足最小长度。为什么它只在字符串的右边输出1个空格?
这是我的代码:为什么printf空格填充只允许一个空格?
<?php
$str1 = "Hello";
printf("[%99s]",$str1);
?>
我期望它输出94米的空间作为填充以满足最小长度。为什么它只在字符串的右边输出1个空格?
如果要输出到网页,HTML不会看到空格(如果您检查源代码,可能存在94个空格)。你必须填写' '
。
试试这个:
echo str_replace(' ', ' ', sprintf("[%-99s]\n", $str1));
我应该澄清一下,我的问题不在于对齐。我得到的输出是 [你好],我期望[...这里有很多空格...你好] – user1537688 2013-05-08 08:36:08
如果你要输出到网页,HTML不会看到空格(如果你检查源代码, 94个空间可能存在)。您必须使用'sprintf',然后将''转换为' '。 – 2013-05-08 08:38:36
除非编码,否则浏览器会消除多个空格。尝试使用 而不是空格。 – karmafunk 2013-05-08 08:39:59
你的代码添加空格正确的金额。你的问题最可能的只是你在浏览器而不是源代码中查看它的表示。在HTML中,不止一个空间将被合并为一个。
无论是查看浏览器的源代码的输出或使用:
<pre>
<?php
$str1 = "Hello";
printf("[%99s]",$str1);
?>
</pre>
我明白了,为什么浏览器如果这是一个有效的PHP命令,这是一个实际的事情? – user1537688 2013-05-08 08:38:07
这很有道理。 HTML代码通常分成几行,使用缩进等。在浏览器的表示中不会需要所有空白。对于这种情况,HTML提供' '和'
'。 –
str
2013-05-08 08:41:02
我得到这个从您的代码:'[<94 spaces>你好]'。减去一个。 – 2013-05-08 08:45:40
为我更新了我的答案。 – 2013-05-08 08:49:49