php sprintf用法

<p>sprintf用来格式化字符串</p><p>说明</p><p>string sprintf ( string $format [, mixed $args [, mixed $... ]]</p><p>参数</p><p>$format<span class="Apple-tab-span" > </span></p><p>可能的格式值:</p><pre class="brush:php;toolbar:false">%%-返回一个百分号% %b-二进制数 %c-ASCII值对应的字符 %d-包含正负号的十进制数(负数、0、正数) %e-使用小写的科学计数法(例如1.2e+2) %E-使用大写的科学计数法(例如1.2E+2) %u-不包含正负号的十进制数(大于等于0) %f-浮点数(本地设置) %F-浮点数(非本地设置) %g-较短的%e和%f %G-较短的%E和%f %o-八进制数 %s-字符串 %x-十六进制数(小写字母) %X-十六进制数(大写字母) 附加的格式值。必需放置在%和字母之间(例如%.2f): +(在数字前面加上+或-来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记) &#39;(规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%&#39;x20s(使用&quot;x&quot;作为填充)) -(左调整变量值) [0-9](规定变量值的最小宽度) .[0-9](规定小数位数或最大字符串长度) 注意:如果使用多个上述的格式值,它们必须按照以上顺序使用。</pre><p>$args<span class="Apple-tab-span" > </span>规定插到format字符串中 % 符号处的参数</p><p>进制转换</p><pre class="brush:php;toolbar:false">echosprintf(&#39;%d&#39;,0b11110).&quot;\n&quot;;//二进制转成十进制 echosprintf(&#39;%d&#39;,036).&quot;\n&quot;;//八进制转成十进制 echosprintf(&#39;%d&#39;,0x1e).&quot;\n&quot;;//十六进制转成十进制 echosprintf(&#39;%x&#39;,30).&quot;\n&quot;;//十进制转成十六进制 echosprintf(&#39;%o&#39;,30).&quot;\n&quot;;//十进制转成八进制,注意&quot;%o\n&quot;里的&quot;o&quot;是英文字母&quot;o&quot; 输出: 3030301e36</pre><p>控制长度</p><pre class="brush:php;toolbar:false">var_dump(sprintf(&#39;%.2f&#39;,11.1111));//2个小数位 var_dump(sprintf(&#39;%10.2f&#39;,11.1111));//最小长度10,2个小数位 var_dump(sprintf(&#39;%-10.2f&#39;,11.1111));//-表示左对齐,最小长度10,小数点后面最大长度2 var_dump(sprintf(&#39;%.5s&#39;,&#39;helloworld&#39;));//最大长度5,可以截取字符串喔</pre><p>输出:</p><pre class="brush:php;toolbar:false">string(5)&quot;11.11&quot; string(10)&quot;11.11&quot; string(10)&quot;11.11&quot; string(5)&quot;hello&quot;</pre><p>补位</p><p>顾名思义就是长度不够的时候补齐,格式:百分号+单引号+补位符号+长度+类型</p><p>&#39;是补位标志,跟在它后面的就是补位符号,比如我这要显示11个字符长度的手机号码,只显示后4位,其余用*号代替</p><pre class="brush:php;toolbar:false">$username=&#39;pigfly&#39;; $phone=&#39;12345678901&#39;; echosprintf(&quot;%&#39;*11s&quot;,substr($phone,-4)).&quot;\n&quot;;</pre><p>手机号截取后只剩下后4位了,我在前面补*,那么总长度是11,s是字符串类型,%&#39;*11s就是这个意思</p><p>输出:</p><p>*******8901</p><p>占位符</p><p>格式:百分号+数字+$+类型</p><p>//注意这里不要用双引号把字符串包起来,这样会导致php去解析$s变量,或者你可以用\$转义</p><p>echo sprintf(&#39;Hi, %1$s~ your phone number is: %2$s, hope you will have a nice day, %1$s!&#39;, $username, $phone);</p><p>输出:</p><p>Hi, pigfly~ your phone number is: 12345678901, hope you will have a nice day, pigfly!</p>
RangeTime:0.006822s
RangeMem:207.55 KB
返回顶部 留言