zoukankan      html  css  js  c++  java
  • PHP sprintf() 函数

    简介

    • 用处:
    1. 把字符串进行多种类型的格式化
    2. 用于:处理xml数据格式时,需要用到他来格式化等等
    • 基本语法格式:sprintf("%格式化类型","$str1","$str2")

    • 常用类型参照表:

    举例

    最简单的案例

    
    <?php
    $str1="1234";
    
    echo sprintf("hello%s","$str1");
    
    //效果为: hello1234
    
    
    ?>
    
    
    • 要点:

    %s = %符号和后面属性符号(s)总称为插入标记组合,也就是把后面准备进行格式化的值($str1)替换在这个位置

    hello = 这个单词就是很多人蒙蔽的地方,告诉你这个什么代表也没有,就单纯的代表一个hello,用于分割或者修饰用,一般用[ %s ]、<%s>这样格式化出来后就直接在标签里

    记住,一个%标记符后面只有一个类型属性(比如s),s是什么上面有,以字符串的方式格式化

    • 多个值怎么格式化
    <?php
    $a="abcdef";
    $b="abcdef";
    $c="1234";
    echo sprintf("%1$s%2$s",$c,$a);
    //效果为: 1234abcdef
    ?>
    

    %s为一个标记,两个%s%s这样写却是错误的,每个%s必须标记键位,不然我怎么知道都代表格式化后面的哪个$str呢,所以有个特别的语法 %1$%2$

    解释:%1表示格式化sprintf("%1$%2$",''$str1","$str2")中对应的$str1,那么%2自然表示格式化$str2,$是代表有多个值准备格式化,所以每个%1和%2或者还有%3的标记后都要加这个符号代表一行中有多个标记,如果只有一个标记就不用$了占位符了,记住$str2、$str3是可选,也就是可以不格式化这么多

    一个特殊的例子

    <?php
    $a="abcdef";
    $b="abcdef";
    
    $c="1234";
    echo sprintf("%'x13.2f",$c);
    
    // 效果为:xxxxxx1234.00
    
    //echo sprintf("%06.2f", $a);
    // 效果为:000.00
    
    // 当用0补位的时候,单引号(’)可以省略
    
    ?>
    
    • 要点:

    sprintf("%'x13.2f",$c)

    这是什么意思,f是浮点数,第一步按照格式 % '(补位值) 宽度值 格式化类型 这三部分,语法之间必须紧挨着不能用空格

    必须解释一下何为补位值:就是设定的宽度(计算的时候包括小数点在内)超出了,用这个值来填上

    解释一下,补位值只有设置宽度超出了目标值才能用

    所以就是用x补位,13为总宽度,2为小数点后的宽度,f为格式化类型,' 号(单引号)代表接下来要用补位类型

    为什么他能识别x是补位值呢,因为前面有 ' 号

    为什么他能识别哪几位是哪种类型呢,他是这样识别的,按顺序从先从两头的字符开始识别是什么类型,补位值肯定是单数位,不可能一个位置补两个数吧,所以左边第一位x是补位值,右边第一位是格式化类型,然后中间的自然是宽度值

    为什么小数点 后还有一个属性 ,因为这是f(浮点型),必须设置小数点后有几位,不能小数后面不能设置了吧,那浮点数意义何在呢

    整数补位

    
    <?php
    $a="abcdef";
    $b="abcdef";
    
    $c="1234";
    echo sprintf("[%-6s]",$c);       //结果是:[1234 ]
    
    echo sprintf("[%-4s]",$c);       //结果是:[1234]
    
    echo sprintf("[%4.2s]",$c);       //结果是:[ 12]
    
    echo sprintf("[%-4.1s]",$c);   //结果是:[1 ]
    
    echo sprintf("[%'a-9.2s]",$c);       //结果是:[12aaaaaaa]
    
    ?>
    
    • 要点

    没有 ' 号,如果需要补位的话,用空格填充

    {-} 号,代表补位方向相反,如在补位值前加 - ,表示从右边开始补位

    用空格补位的话,即使有多个空格,也只会显示一个空格

    整数补位的话,若是6.3这类带小数的形式,整数部位的位数将最终只由小数点后的值确定

    正因为来之不易,所以才有了后来的倍加珍惜。
  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/jjxhp/p/10069783.html
Copyright © 2011-2022 走看看