我們知道sprintf() 函數把格式化的字串寫寫入一個變數中,我們經常會看到這類代碼了,下面我來介紹sprintf() 函數使用方法,有需要的朋友可參考參考。
用法
sprintf(format,arg1,arg2,arg++)
說明
參數 format 是轉換的格式,以百分比符號 ("%") 開始到轉換字元結束。下面的可能的 format 值:
•%% - 返回百分比符號
•%b - 位元
•%c - 依照 ASCII 值的字元
•%d - 帶符號十進位數
•%e - 可續計數法(比如 1.5e+3)
•%u - 無符號十進位數
•%f - 浮點數(local settings aware)
•%F - 浮點數(not local settings aware)
•%o - 八位元
•%s - 字串
•%x - 十六進位數(小寫字母)
•%X - 十六進位數(大寫字母)
arg1, arg2, ++ 等參數將插入到主字串中的百分比符號 (%) 符號處。該函數是逐步執行的。在第一個 % 符號中,插入 arg1,在第二個 % 符號處,插入 arg2,依此類推。
我在開放平台會看到如下代碼
| 代碼如下 |
複製代碼 |
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $msgType = "text"; $textTpl = " %s %s %s %s %s 0 "; if(!empty( $keyword )) { $contentStr = $this->keyrep($keyword); if( empty($contentStr) ) { $contentStr ="你是故意的吧,沒文化真可怕";//你是故意的吧,沒文化真可怕; } //$contentStr = @iconv('UTF-8','gb2312',$keyword); $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ $contentStr = '沒文化真可怕,居然不會打字!';//$this->keyrep($keyword); //$contentStr = @iconv('UTF-8','gb2312',$keyword); $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } |
上面用到的是xml中了,下面再看一個網友寫的例子
| 代碼如下 |
複製代碼 |
/** * sprintf()函數使用 * @date 2012-12-17 * @author cntnn11 */ /** * 手冊定義:函數把格式化的字串寫寫入一個變數中。 * 他的可識別的格式 * %% - 返回百分比符號 * %b - 位元 * %c - 依照 ASCII 值的字元 * %d - 帶符號十進位數 * %e - 科學計數法(比如 1.5e+3) * %u - 無符號十進位數 * %f - 浮點數(local settings aware) * %F - 浮點數(not local settings aware) * %o - 八位元 * %s - 字串 * %x - 十六進位數(小寫字母) * %X - 十六進位數(大寫字母) * sprintf($str, arg1, arg2, arg3 ...); */ /** * 1. %% * 把%%替換成% */ $testStr = '測試下%%這個參數。會被替換成什麼呢'; echo sprintf($testStr),' '; //-> 測試下%這個參數。會被替換成什麼呢; //只剩下一個%了 //看來還真的只是返回一個‘%’。但是實際應用中該怎麼用呢? //我也不知道~ echo '
'; /** * 2. %b * 該參數只能替換整型資料。如果是浮點型,那麼他只會取整數部分。小數點後邊的會忽略 * 如果是一個非整型資料,那麼返回 0 */ $testStr = '聽說%b會替換成位元,真的嗎?'; $arg = '10'; echo sprintf($testStr, $arg),' '; //-> 1010; $arg=10; 真的替換了! //-> 101; $arg=4.5 //-> 0; $arg=str/bool... echo '
'; /** * 3. %c 返回字元編碼的ASCII碼 * TIP:[他不是返回ASCII碼] * $arg接受一個int傳入即ASCII的數字值,然後返回該值對應的字元 */ $testStr = '我們來測試下 %c : 試試看能返回ASCII碼嗎'; $arg = '122'; echo sprintf($testStr, $arg); //-> A; $arg=65; //-> z; $arg=122 echo '
'; /** * 4. %d 將一段字元裡的%d替換成int型 * TIP:這裡可以是任意一個int整型。 * 如果是一個浮點數據,那麼只會替換整數部分 * 如果是非數位,那麼會替換成0 */ $testStr = "這是一個ID,ID號是%d,"; $arg = '-4'; echo sprintf($testStr, $arg); //-> 4; $arg=4.5 //-> 0; $arg=[a-zA-Zs]; echo '
'; /** * 5. %e 科學計數法 * TIP:將一段很長很長的int整型資料以科學計數法的形式呈現 * 同%d,該函數同樣會忽略掉小數點後面的,任何非數值資料替換成0 */ $testStr = "我很長,有N多位。。。 %e"; $arg = '46498464654864564642449463699789789313'; echo sprintf($testStr, $arg); //-> 4.649846e+14; $arg=464984646548645.64642449463699789789313 //-> 0.000000e+0; $arg=asdfasdf; echo '
'; /** * 5. %u - 無符號十進位數 * 不明白。。。如果有是負數,他的值不知道是啥值 */ $testStr = "我是無符號的十進位數。。。 %u"; $arg = '456'; echo sprintf($testStr, $arg); echo '
'; /** * 6. %f - 浮點數(local settings aware) * 難道和%d是相反的? * 這個會返回一個浮點數,並且小數點後面只有固定的6位 * 字串同樣為 0 ; */ $testStr = "和那個d有啥區別呢?%f"; $arg = '456.235645'; echo sprintf($testStr, $arg); echo '
'; /** * 7. %F - 浮點數(not local settings aware) * 難道和%f是相反的?怎麼和小f沒區別?不會吧 */ $testStr = "和那個小寫f有啥區別呢?%F"; $arg = '12312316.46898'; echo sprintf($testStr, $arg); echo '
'; /** * 8. %o - 八位元 * 同%d一樣。只不過參數傳入一個八位元值 */ $testStr = "將八位元替換成十進位的 %o"; $arg = '8'; echo sprintf($testStr, $arg); echo '
'; /** * 9. %x - 十六進位數(小寫字母) * 同%d/%o一樣。只不過參數傳入一個小寫字母的十六進位數值 */ $testStr = "將十六進位數替換成十進位的 %o"; $arg = '456d12'; echo sprintf($testStr, $arg); echo '
'; /** * 10. %X - 十六進位數(大寫字母) * 同%d/%o/%x一樣。只不過參數傳入一個大寫字母的十六進位數值 * 貌似%x %X兩個字母大小寫沒區別... */ $testStr = "將大寫字母的十六進位數替換成十進位的 %o"; $arg = '456D12'; echo sprintf($testStr, $arg); echo '
'; /** * 11. %s - 字串 * 用你傳入的字串替換掉%s */ $string = "這是用來測試的sprintf的字串( %s )。今天消費了%f元。從西二旗到知春路有%d站。上班"; $arg = ''; echo sprintf($string, $arg, 234, 10); echo '
'; ?> |
http://www.bkjia.com/PHPjc/628892.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628892.htmlTechArticle我們知道sprintf() 函數把格式化的字串寫寫入一個變數中,我們經常會看到這類代碼了,下面我來介紹sprintf() 函數使用方法,有需要的朋友...