在 PHP 中,sprintf()是一種十分常用的格式化字符串函數(shù)。它可以將字符串按照指定的格式輸出,非常適用于需要讓字符串精細(xì)控制輸出格式的場合。
舉一個(gè)簡單的例子。假設(shè)我們需要在頁面中輸出當(dāng)前時(shí)間,但是要求時(shí)間的格式為 "2021年11月6日 19時(shí)07分" 。這個(gè)時(shí)候,我們可以使用以下的代碼:
$time = time(); $timeStr = date("Y年m月d日 H時(shí)i分", $time); echo $timeStr;這樣可以實(shí)現(xiàn)我們的需求,但是卻需要分別使用time()函數(shù)獲取當(dāng)前時(shí)間戳,date()函數(shù)將時(shí)間戳轉(zhuǎn)換為指定格式的字符串,然后再使用echo函數(shù)輸出字符串。顯得過于麻煩。 相比上面的代碼,使用sprintf函數(shù)可以簡化代碼嵌套,同時(shí)更好地控制輸出的精度和格式。下面是使用sprintf實(shí)現(xiàn)同樣效果的代碼:
$time = time(); $timeStr = sprintf("%04d年%02d月%02d日 %02d時(shí)%02d分", date("Y", $time), date("m", $time), date("d", $time), date("H", $time), date("i", $time)); echo $timeStr;這段代碼中,我們使用sprintf函數(shù)將整個(gè)時(shí)間字符串的格式進(jìn)行了精細(xì)控制,用 %04d 表示年份,表示輸出4位數(shù)字、不夠位數(shù)時(shí)補(bǔ)0;用 %02d 表示月份/日/小時(shí)/分鐘,表示輸出2位數(shù)字、不足時(shí)補(bǔ)0。這樣一來,我們可以實(shí)現(xiàn)精準(zhǔn)的控制輸出格式,而且更加簡便。 sprintf函數(shù)的格式字符串中,不僅可以使用 %d 表示十進(jìn)制整數(shù),還可以使用 %f 表示浮點(diǎn)數(shù)、%s 表示字符串,等等。并且,格式字符串中可以加入一些可選參數(shù)來控制對齊方式、位數(shù)等,例如:%10s 表示字符串長度不足10位時(shí),在左側(cè)補(bǔ)齊空格。
$num = 12345.678; $str = "abcdefg"; echo sprintf("%0'.10d", $num) . " / " . sprintf("%10s", $str);這段代碼中,我們分別使用 sprintf 函數(shù)將數(shù)字和字符串格式化輸出。對于數(shù)字,我們將它格式化為10位的整數(shù),不足10位時(shí),在左側(cè)補(bǔ)齊0;對于字符串,我們將它在右側(cè)補(bǔ)齊空格,使得字符串長度達(dá)到10。輸出結(jié)果為:
0000012346 / abcdefg除了上述示例外,sprintf函數(shù)還可以實(shí)現(xiàn)更加復(fù)雜的字符串拼接和格式化輸出,例如實(shí)現(xiàn)全角和半角字符轉(zhuǎn)換、超長數(shù)字的科學(xué)計(jì)數(shù)法輸出等。在日常開發(fā)中,合理使用sprintf函數(shù)可以讓我們的代碼更加簡潔、易讀,為實(shí)現(xiàn)細(xì)致的輸出效果提供強(qiáng)大的支持。
上一篇php sql