程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> sprintf函數php的詳細使用方法,sprintf函數php

sprintf函數php的詳細使用方法,sprintf函數php

編輯:關於PHP編程

sprintf函數php的詳細使用方法,sprintf函數php


 

PHP sprintf() 函數

先說下為什麼要寫這個函數的前言,這個是我在微信二次開發的一個token驗證文檔也就是示例文檔看到的一個函數,當時非常不理解,於是查了百度,但是很多結果都很籠統,結果也很少,後來查閱了3c和問了公司的一些人做了一些測試慢慢懂了一些,一下就是我對sprintf函數的個人見解

 

用處:把字符串進行多種類型的格式化

用於:處理xml數據格式時,需要用到他來格式化等等

 

基本語法格式:sprintf("%格式化類型","$str1","$str2") ;先別急我會一個個慢慢說

先看一下類型參照表,也就是要轉換成什麼類型的格式

這是轉換格式的類型參照表

 

先舉個最簡單的案例

<?php
$str1="1234";

echo sprintf("hello%s","$str1");

//效果為: hello1234


?>

這什麼意思呢

要點:

%s = %符號和後面屬性符號(s)總稱為插入標記組合,也就是把後面准備進行格式化的值($str1)替換在這個位置 

hello = 這個單詞就是很多人蒙蔽的地方,告訴你這個什麼代表也沒有,就單純的代表一個hello,用於分割或者修飾用,一般用[ %s ]、<%s>這樣格式化出來後就直接在標簽裡

記住,一個%標記符後面只有一個類型屬性(比如s),s是什麼上面有,以字符串的方式格式化

 

 

那麼多個值怎麼格式化一起呢

<?php
$a="abcdef";
$b="abcdef";

$c="1234";
echo sprintf("%1\$s%2\$s",$c,$a);

//效果為: 1234abcdef


?>

%s為一個標記,兩個%s%s這樣寫卻是錯誤的,每個%s必須標記鍵位,不然我怎麼知道都代表格式化後面的哪個$str呢,所以有個特別的語法

%1\$%2\$      解釋:%1表示格式化sprintf("%1\$%2\$",''$str1","$str2")中對應的$str1,那麼%2自然表示格式化$str2,\$是代表有多個值准備格式化,所以每個%1和%2或者還有%3的標記後都要加這個符號代表一行中有多個標記,如果只有一個標記就不用\$了占位符了,記住$str2、$str3是可選,也就是可以不格式化這麼多

 

講個特殊的例子

<?php
$a="abcdef";
$b="abcdef";

$c="1234";
echo sprintf("%'x13.2f",$c);

// 效果為:xxxxxx1234.00


//echo sprintf("%06.2f", $a);


?>

sprintf("%'x13.2f",$c);

這是什麼意思,f是浮點數,第一步按照格式 %   '(補位值) 寬度值  格式化類型  這三部分,語法之間必須緊挨著不能用空格

必須解釋一下何為補位值:就是設定的寬度超出了,用這個值來填上

 

解釋一下,補位值只有設置寬度超出了目標值才能用

所以就是用x補位,13為總寬度,2為小數點後的寬度,f為格式化類型,別急我會解釋

 ' 號(單引號)代表接下來要用補位類型

 

為什麼他能識別x是補位值呢,因為前面有 ' 號,

為什麼他能識別哪幾位是哪種類型呢,他是這樣識別的,按順序從先從兩頭的字符開始識別是什麼類型,補位值肯定是單數位,不可能一個位置補兩個數吧,所以左邊第一位x是補位值,右邊第一位是格式化類型,然後中間的自然是寬度值

第二,為什麼小數點 後還有一個屬性 ,因為這是f(浮點型),必須設置小數點後有幾位,不能小數後面不能設置了吧,那浮點數意義何在呢

 

不要覺得煩,每個例子都是濃縮出來的

 

整數補位

<?php
$a="abcdef";
$b="abcdef";

$c="1234";
echo sprintf("%'07s",$c);

//結果是:0001234


?>

這就是整數補位,還是一樣
第一步按照格式 %   '(補位值) 寬度值  格式化類型  這三部分

0是補位值 7是寬度值 s自然是格式化類型

 

還有一種最重要的例子

<?php
$a="abcdef";
$b="abcdef";

$c="1234";
echo sprintf("[%-6s]",$c);       //結果是:[1234 ]

echo sprintf("[%-4s]",$c);       //結果是:[1234]

echo sprintf("[%4.2s]",$c);       //結果是:[ 12]

?>

 

這個第一步 [ ] 僅僅只是修飾,不用理解

第二步,沒有 ' 號,證明沒有補位,無需添加補位值

所以語法格式為 : %    寬度值  格式化類型  這兩部分

 

第一二行解釋如下:

第一個寬度為6,但是$c=1234 ,只有4個字符,所以寬度不夠,所以右邊自動擴充(擴充再多也只顯示一個空格位置),為什麼在右邊擴充,因為寬度前有個 - 號,代表補位方向相反,如在補位值前加-,自然從右邊開始補位

下面為什麼沒變化,因為寬度正好一致,只是補位的方向改變了

 

第三行解釋如下:

不要被蒙蔽了,語法結構還是一樣    %    寬度值  格式化類型  這兩部分

所以4.2依舊是寬度值

只是小數點左邊的4代表總寬度,右邊的2代表只顯示2位出來,所以又空缺了兩個,所以左邊開始擴充兩個空位,為什麼只顯示一個空格上一段說了,再說一次吧擴充再多也只顯示一個空格位置。默認從左邊開始

 

相信已經透徹的講了,已經沒有能夠濃縮的地方了,有什麼不懂可以留言,一般常在,盡量幫你解決,伸出小手點個贊,謝謝

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved