歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> PHP 字符串操作的 printf() 內置函數用法

PHP 字符串操作的 printf() 內置函數用法

日期:2017/3/1 9:26:03   编辑:Linux編程

php中指出打印輸出的函數有很多 最常見的就是 echo print() printf() spintf() 這幾個了。

echo 和 print() 功能相同,但是 print( )具有執行成功與否的返回值 (true 和 false)。

使用函數 printf() 和 sprintf() 還可以實現一些更為復雜的格式化輸出。 這兩個的工作方式基本相同,只是printf() 函數是講一個格式化的字符串輸出到浏覽器中,而 sprintf() 函數是返回一個格式化過的字符串。

printf() 基本用法:

echo "you have $total money";

要使用printf() 函數得到相同的結果,就應該使用如下語句:

printf ("you have %s money", $total );

格式化字符串中的%s 是轉換標記。它的意思是使用後面的變量來替換自己。 在這個例子中它會被解釋成字符串$total 的代替。 如果 $total 變量中的值是 25.6,以上兩種方法都將打印為25.6 。

printf() 的優點在於,可以使用更有用的轉換說明來指定 $total 為一個浮點數(它的後面應該有兩位小數點)。 如下所示:

printf("you hava %.2f money ", $total );

經過這行代碼格式化處理,存儲在 $total 中的25.6 將打印為 25.60 。(但是並不影響變量原始的值)

可以在格式化字符串中使用多個轉換標記。 如果有n個轉換標記,那麼在格式化字符串後面就應該帶有n個參數。 每個轉換標記默認將按照給出的順序依次重新格式化。

printf ("you have %.2f money , but shopping %.2f RMB ", $total , $total_shopping );

在這裡,第一個轉換標記將使用$total 的值, 第二個轉換標記將使用變量 $total_shopping 的值。

printf() %轉換標記的語法格式:

%[ 'padding_character] [ - ] [ width ] [ .precision ] type //中括號內的參數為可選參數

所有的轉換標記都以% 開頭。

參數padding_character 將被用來填充變量直至所指定的寬度。該參數的作用就像使用計算器那樣在數字前面加零。 默認填充字符是一個空格,如果指定了一個空格或者0 ,就不需要使用 ‘ 單引號作為前綴。 對於任何其他填充字符,必須指定 ’ 單引號前綴。

字符 - 是可選的。它指明該域中的數據的對齊方式, 該選項默認留空即右對齊,設置了 - 符號,那麼就是左對齊(填充字符填充到右邊不夠的位置)。

參數 width 是可選的,它告訴printf() 函數在這裡將顯示的字符寬度(按字符計算)。

參數 precision 必須是以一個小數點開始。 它用於指明小數點後的精確位數。

轉換標記最後的一部分是一個類型碼。 其支持的所有類型如下表所示:

代碼類型 意義 b 解釋為整數並作為二進制數輸出 c 解釋為整數並作為字符輸出 d 解釋為整數並作為小數輸出 f 解釋為雙精度並作為浮點數輸出 o 解釋為整數並作為八進制數輸出 s 解釋為字符串並作為字符串輸出 u 解釋為整數並作為非指定小數輸出 x

解釋為整數並作為帶有小寫字母a~f的十六進制數輸出

X 解釋為整數並作為帶有大寫字母A~F的十六進制數輸出

用法示例:

php > $a = 534 ;
php > printf("printf type is %.1f",$a);
printf type is 534.0
php > printf("printf type is %'u.1f",$a);
printf type is 534.0
php > printf("printf type is %'u6.1f",$a);
printf type is u534.0
php > printf("printf type is %'u10.1f",$a);
printf type is uuuuu534.0
php > printf("printf type is %'u-10.1f",$a);
printf type is 534.0uuuuu
php > printf("printf type is %b",$a);
printf type is 1000010110
php > printf("printf type is %o",$a);
printf type is 1026
php > printf("printf type is %s",$a);
printf type is 534
php > printf("printf type is %u",$a);
printf type is 534
php > printf("printf type is %x",$a);
printf type is 216
php > $a = 539;
php > printf("printf type is %x",$a);
printf type is 21b

當在類型轉換代碼中使用 printf() 函數時,你可以使用帶序號的參數方式,這就意味著參數的順序並不一定要與轉換標記中的順序相同。 例如:

printf ("you have %2\$.2f money , but shopping %1\$.2f RMB ", $total , $total_shopping );

只要直接在 % 符號後添加參數的位置,並且以 $ 符號為結束 。 在這個例子中,2\$ 意味著用列表中的第二個參數替換。這個方法也可以在重復參數中使用。

php > $a = 539;
php > $b = 38;
php > printf("you have %2\$.2f money , but shopping %1\$.2f RMB! ", $a,$b);
you have 38.00 money , but shopping 539.00 RMB!
php >

這些函數還有兩種可替換版本,分別是 vprintf() 和 vsprintf() 。這些變體函數接受兩個參數:格式字符串 和 參數數組, 而不是可變數量的參數。

Copyright © Linux教程網 All Rights Reserved