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 ?>