设为首页 收藏本站
查看: 970|回复: 0

[经验分享] PHP 字符串操作的 printf() 内置函数用法

[复制链接]

尚未签到

发表于 2018-12-19 06:16:46 | 显示全部楼层 |阅读模式
  php中指出打印输出的函数有很多 最常见的就是  echo  print()   printf()   spintf() 这几个了。
  

  echo 和 print() 功能相同,但是 print( )具有执行成功与否的返回值 (true 和 false)。
  

  使用函数 printf()  和 sprintf() 还可以实现一些更为复杂的格式化输出。 这两个的工作方式基本相同,只是printf() 函数是讲一个格式化的字符串输出到浏览器中,而 sprintf() 函数是返回一个格式化过的字符串。
  

  printf()  基本用法:

echo "you have $total money";  要使用printf() 函数得到相同的结果,就应该使用如下语句:

printf ("you have %s money", $total );  格式化字符串中的%s 是转换标记。它的意思是使用后面的变量来替换自己。 在这个例子中它会被解释成字符串$total 的代替。  如果 $total 变量中的值是 25.6,以上两种方法都将打印为25.6 。

  

  printf() 的优点在于,可以使用更有用的转换说明来指定 $total 为一个浮点数(它的后面应该有两位小数点)。 如下所示:
printf("you hava %.2f money ", $total );  经过这行代码格式化处理,存储在 $total 中的25.6 将打印为 25.60 。(但是并不影响变量原始的值)
  

  可以在格式化字符串中使用多个转换标记。 如果有n个转换标记,那么在格式化字符串后面就应该带有n个参数。 每个转换标记默认将按照给出的顺序依次重新格式化。
printf ("you have %.2f money , but shopping %.2f RMB ", $total , $total_shopping );  在这里,第一个转换标记将使用$total 的值, 第二个转换标记将使用变量 $total_shopping 的值。
  

  printf()   %转换标记的语法格式:
  %[ 'padding_character] [ - ] [ width ] [ .precision ] type    //中括号内的参数为可选参数
  所有的转换标记都以% 开头。
  参数padding_character 将被用来填充变量直至所指定的宽度。该参数的作用就像使用计算器那样在数字前面加零。 默认填充字符是一个空格,如果指定了一个空格或者0 ,就不需要使用 ‘ 单引号作为前缀。 对于任何其他填充字符,必须指定 ’ 单引号前缀。
  字符 - 是可选的。它指明该域中的数据的对齐方式, 该选项默认留空即右对齐,设置了 - 符号,那么就是左对齐(填充字符填充到右边不够的位置)。

  参数 width 是可选的,它告诉printf() 函数在这里将显示的字符宽度(按字符计算)。

  参数 precision 必须是以一个小数点开始。 它用于指明小数点后的精确位数。

  转换标记最后的一部分是一个类型码。 其支持的所有类型如下表所示:

代码类型意义
b解释为整数并作为二进制数输出
c解释为整数并作为字符输出
d解释为整数并作为小数输出
f解释为双精度并作为浮点数输出
o解释为整数并作为八进制数输出
s解释为字符串并作为字符串输出
u解释为整数并作为非指定小数输出
x  解释为整数并作为带有小写字母a~f的十六进制数输出
X解释为整数并作为带有大写字母A~F的十六进制数输出
  

  用法示例:
php > $a = 534 ;
php > printf("printf type is %.1f",$a);
printf type is 534.0
php > printf("printf type is %'u.1f",$a);
printf type is 534.0
php > printf("printf type is %'u6.1f",$a);
printf type is u534.0
php > printf("printf type is %'u10.1f",$a);
printf type is uuuuu534.0
php > printf("printf type is %'u-10.1f",$a);
printf type is 534.0uuuuu
php > printf("printf type is %b",$a);
printf type is 1000010110
php > printf("printf type is %o",$a);
printf type is 1026
php > printf("printf type is %s",$a);
printf type is 534
php > printf("printf type is %u",$a);
printf type is 534
php > printf("printf type is %x",$a);
printf type is 216
php > $a = 539;
php > printf("printf type is %x",$a);
printf type is 21b  

  当在类型转换代码中使用 printf() 函数时,你可以使用带序号的参数方式,这就意味着参数的顺序并不一定要与转换标记中的顺序相同。 例如:
printf ("you have %2\$.2f money , but shopping %1\$.2f RMB ", $total , $total_shopping );  只要直接在 % 符号后添加参数的位置,并且以 $ 符号为结束 。 在这个例子中,2\$ 意味着用列表中的第二个参数替换。这个方法也可以在重复参数中使用
php > $a = 539;
php > $b = 38;
php > printf("you have %2\$.2f money , but shopping %1\$.2f RMB! ", $a,$b);
you have 38.00 money , but shopping 539.00 RMB!
php >  

  

  这些函数还有两种可替换版本,分别是 vprintf()  和 vsprintf() 。这些变体函数接受两个参数:格式字符串 和 参数数组, 而不是可变数量的参数。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652961-1-1.html 上篇帖子: 如何正确配置Nginx+PHP-nick 下篇帖子: Nagios 监控Nginx和php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表