php函数:sprintf(format)

nnd!上下班成本太高了!起晚了挤不上地铁!

今天看了下sprinf这个函数

用于字符串格式化。

 

  1 <?php
  2 /**
  3  *        sprintf()函数使用
  4  *        @date 2012-12-17
  5  *        @author cntnn11
  6  */
  7  /**
  8  *        手册定义:函数把格式化的字符串写写入一个变量中。
  9  *        他的可识别的格式
 10  *            %% - 返回百分比符号
 11  *            %b - 二进制数
 12  *            %c - 依照 ASCII 值的字符
 13  *            %d - 带符号十进制数
 14  *            %e - 科学计数法(比如 1.5e+3)
 15  *            %u - 无符号十进制数
 16  *            %f - 浮点数(local settings aware)
 17  *            %F - 浮点数(not local settings aware)
 18  *            %o - 八进制数
 19  *            %s - 字符串
 20  *            %x - 十六进制数(小写字母)
 21  *            %X - 十六进制数(大写字母)
 22  *        sprintf($str, arg1, arg2, arg3 ...);
 23 */
 24 
 25 /**
 26 *    1.    %%
 27 *        把%%替换成%
 28 */
 29 $testStr    = '测试下%%这个参数。会被替换成什么呢';
 30 echo sprintf($testStr),'<br/>';
 31 //-> 测试下%这个参数。会被替换成什么呢;
 32 //只剩下一个%了
 33 //看来还真的只是返回一个‘%’。但是实际应用中该怎么用呢?
 34 //我也不知道~
 35 echo '<br/><hr/><br/>';
 36 /**
 37 *    2.    %b 
 38 *        该参数只能替换整型数据。如果是浮点型,那么他只会取整数部分。小数点后边的会忽略
 39 *        如果是一个非整型数据,那么返回 0 
 40 */
 41 $testStr    = '听说%b会替换成二进制数,真的吗?';
 42 $arg        = '10';
 43 echo sprintf($testStr, $arg),'<br/>';
 44 //-> 1010;    $arg=10;    真的替换了!
 45 //-> 101;    $arg=4.5
 46 //-> 0;        $arg=str/bool...
 47 echo '<br/><hr/><br/>';
 48 
 49 /**
 50 *    3.    %c 返回字符编码的ASCII码
 51 *        TIP:[他不是返回ASCII码]
 52 *        $arg接受一个int传入即ASCII的数字值,然后返回该值对应的字符
 53 */
 54 $testStr    = '我们来测试下 %c : 试试看能返回ASCII码吗';
 55 $arg    = '122';
 56 echo sprintf($testStr, $arg);
 57 //-> A;    $arg=65;
 58 //-> z; $arg=122
 59 echo '<br/><hr/><br/>';
 60 /**
 61  *    4. %d 将一段字符里的%d替换成int型
 62  *        TIP:这里可以是任意一个int整型。
 63  *            如果是一个浮点数据,那么只会替换整数部分
 64  *            如果是非数字的,那么会替换成0
 65  */
 66 $testStr    = "这是一个ID,ID号是%d,";
 67 $arg        = '-4';
 68 echo sprintf($testStr, $arg);
 69 //-> 4;    $arg=4.5
 70 //-> 0; $arg=[a-zA-Z\s];
 71 echo '<br/><hr/><br/>';
 72 
 73 /**
 74  *    5.    %e 科学计数法
 75  *        TIP:将一段很长很长的int整型数据以科学计数法的形式呈现
 76  *            同%d,该函数同样会忽略掉小数点后面的,任何非数值数据替换成0
 77 */
 78 $testStr    = "我很长,有N多位。。。 %e";
 79 $arg        = '46498464654864564642449463699789789313';
 80 echo sprintf($testStr, $arg);
 81 //-> 4.649846e+14;    $arg=464984646548645.64642449463699789789313
 82 //-> 0.000000e+0; $arg=asdfasdf;
 83 echo '<br/><hr/><br/>';
 84 
 85 /**
 86  *    5.    %u - 无符号十进制数
 87  *        不明白。。。如果有是负数,他的值不知道是啥值
 88 */
 89 $testStr    = "我是无符号的十进制数。。。 %u";
 90 $arg        = '456';
 91 echo sprintf($testStr, $arg);
 92 echo '<br/><hr/><br/>';
 93 
 94 /**
 95  *    6.    %f - 浮点数(local settings aware)
 96  *            难道和%d是相反的?
 97  *                这个会返回一个浮点数,并且小数点后面只有固定的6位
 98  *                字符串同样为 0 ;
 99 */
100 $testStr    = "和那个d有啥区别呢?%f";
101 $arg        = '456.235645';
102 echo sprintf($testStr, $arg);
103 echo '<br/><hr/><br/>';
104 
105 /**
106  *    7.    %F - 浮点数(not local settings aware)
107  *        难道和%f是相反的?怎么和小f没区别?不会吧
108  */
109 $testStr    = "和那个小写的f有啥区别呢?%F";
110 $arg        = '12312316.46898';
111 echo sprintf($testStr, $arg);
112 echo '<br/><hr/><br/>';
113 
114 /**
115  *    8.    %o - 八进制数
116  *        同%d一样。只不过参数传入一个八进制数值
117  */
118 $testStr    = "将八进制数替换成十进制的 %o";
119 $arg        = '8';
120 echo sprintf($testStr, $arg);
121 echo '<br/><hr/><br/>';
122 
123 /**
124  *    9.    %x - 十六进制数(小写字母)
125  *        同%d/%o一样。只不过参数传入一个小写字母的十六进制数值
126  */
127 $testStr    = "将十六进制数替换成十进制的 %o";
128 $arg        = '456d12';
129 echo sprintf($testStr, $arg);
130 echo '<br/><hr/><br/>';
131 
132 /**
133  *    10.    %X - 十六进制数(大写字母)
134  *        同%d/%o/%x一样。只不过参数传入一个大写字母的十六进制数值
135  *        貌似%x %X两个字母大小写没区别...
136  */
137 $testStr    = "将大写字母的十六进制数替换成十进制的 %o";
138 $arg        = '456D12';
139 echo sprintf($testStr, $arg);
140 echo '<br/><hr/><br/>';
141 
142 /**
143  *    11.    %s - 字符串
144  *        用你传入的字符串替换掉%s
145  */
146 $string    = "这是用来测试的sprintf的字符串( %s )。今天消费了%f元。从西二旗到知春路有%d站。上班";
147 $arg    = '';
148 echo sprintf($string, $arg, 234, 10);
149 echo '<br/><hr/><br/>';
150 
151  
152  ?>

 

 

 

posted @ 2012-12-17 23:52  cntnn11  阅读(318)  评论(0编辑  收藏  举报