2012-06-10 79 views
3

我學習有關的printf,sprintf和我不明白的幾個點,如果能有一個人,請幫助我理解茨艾倫點,PHP,printf的,sprintf函數,在<a href="http://php.net/manual/en/function.sprintf.php" rel="nofollow">PHP Manual</a>

在此鏈接:

有解釋編號從一到六:

我不明白的是:第一和第二(1(符號說明符),2(填充說明符)),如果有人可以幫助我的例子,我會非常感謝。

+2

有很多很多的例子該文檔頁面。你總是可以自己嘗試一下! –

回答

10

的標誌符強制標誌,即使是積極的。所以,如果你有

$x = 10; 
$y = -10; 
printf("%+d", $x); 
printf("%+d", $y); 

您將獲得:

+10 
-10 

的填充符加左填充,使輸出始終以空格定數,它允許你對齊一疊數字與合計有用的時候生成報表等

$x = 1; 
$y = 10; 
$z = 100; 
printf("%3d\n", $x); 
printf("%3d\n", $y); 
printf("%3d\n", $z); 

您將獲得:

1 
    10 
100 

如果你前面加上零填充符,字符串將補零而不是空格填充:

$x = 1; 
$y = 10; 
$z = 100; 
printf("%03d\n", $x); 
printf("%03d\n", $y); 
printf("%03d\n", $z); 

給出:

001 
010 
100 
+0

如果填充參數爲空格,瀏覽器將不顯示填充。僅當某些字符作爲參數 – rancho

+0

給出時纔會顯示填充當然。這是用於文本輸出,而不是HTML。如果您需要HTML,請使用CSS進行對齊。或者用'PRE'標籤包裝。 –

28

sprintf()返回一個字符串,printf()顯示它。

以下兩個相等:

printf(currentDateTime()); 
print sprintf(currentDateTime()); 
+0

這意味着printf打印爲編號 – Hardik

+2

這應該標記爲答案。 – hosein

2

的標誌符:放置一個加號( +)強制使負號和正號可見(只有負值是默認指定的)。

$n = 1; 

$format = 'With sign %+d without %d'; 
printf($format, $n, $n); 

打印:

隨着符號1無1

的填充符說什麼字符將被用於襯墊的結果來指定的長度。該字符的前綴爲單引號(')。例如,要墊長度3與字符 'a':

$n = 1; 

$format = "Padded with 'a' %'a3d"; printf($format, $n, $n); 
printf($format, $n, $n); 

打印:

軟墊與 'A' AA1

0

1.Sign說明符:

默認情況下,瀏覽器僅在負數前面顯示-符號。+正號前面的符號省略。但是可以指示瀏覽器通過使用符號說明符在正數前面顯示+符號。例如:

$num1=10; 
$num2=-10; 
$output=sprintf("%d",$num1); 
echo "$output<br>"; 
$output=sprintf("%d",$num2); 
echo "$output"; 

輸出:

10 
-10 

這裏+符號省略了正數之前。但是,如果我們在%字符%d後面加上+符號,則不再發生省略。

$num1=10; 
$num2=-10; 
$output=sprintf("%+d",$num1); 
echo "$output<br>"; 
$output=sprintf("%+d",$num2); 
echo "$output"; 

輸出:

+10 
-10 

2.Padding說明符:

的填充符添加一定數目的字符的輸出的左或右的。字符可以是空白,零或任何其他ASCII字符。

例如,

$str="hello"; 
$output=sprintf("[%10s]",$str); 
echo $output; 

源代碼輸出:

[  hello]    //Total length of 10 positions,first five being empty spaces and remaining five being "hello" 

HTML輸出:

[ hello]     //HTML displays only one empty space and collapses the rest, you have to use the <pre>...</pre> tag in the code for HTML to preserve the empty spaces. 

把一個負號左邊證明的輸出:

$output=["%-10s",$string]; 
echo $output; 

源碼輸出:

[hello  ] 

HTML輸出:

[hello ] 

0%標誌替換空的空間用零。

$str="hello"; 
$output=sprintf("[%010s]",$str); 
echo $output; 

輸出:

[00000hello] 

左對齊

$output=sprintf("[%-010s]",$str); 

輸出:

[hello00000] 

把隨後像* AF任何ASCII字符'之三%結果在ASCII字符的顯示,而不是空的空間

$str="hello"; 
$output=sprintf("[%'*10s]",$str); 
echo $output; 

輸出:

*****hello 

左對齊:

$output=sprintf("[%-'*10s]",$str); 
echo $output; 

輸出:

hello***** 
相關問題