PHP vsprintf()函数格式化字符串操作原理解析


Posted in PHP onJuly 14, 2020

实例

把格式化字符串写入变量中:

<?php
$number = 9;
$str = "Beijing";
$txt = vsprintf("There are %u million bicycles in %s.",array($number,$str));
echo $txt;
?>

定义和用法

vsprintf() 函数把格式化字符串写入变量中。

与 sprintf() 不同,vsprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。

注释:如果 % 符号多于arg参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。请参见例子 2。

语法

vsprintf(format,argarray)

参数 描述
format 必需。规定字符串以及如何格式化其中的变量。可能的格式值: %%-返回一个百分号% %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): \+(在数字前面加上+或-来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记) '(规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%'x20s(使用"x"作为填充)) \-(左调整变量值) \[0-9\](规定变量值的最小宽度) .\[0-9\](规定小数位数或最大字符串长度)注释:如果使用多个上述的格式值,它们必须按照上面的顺序进行使用,不能打乱。
argarray 必需。带有参数的一个数组,这些参数会被插到 format 字符串中的 % 符号处。

技术细节

返回值:以格式化字符串的形式返回数组值。PHP 版本:4.1.0+

更多实例

例子 1

使用格式值 %f:

<?php
$num1 = 123;
$num2 = 456;
$txt = vsprintf("%f%f",array($num1,$num2));
echo $txt;
?>

例子 2

使用占位符:

<?php
$number = 123;
$txt = vsprintf("有两位小数:%1\$.2f<br>没有小数:%1\$u",array($number));
echo $txt;
?>

例子 3

使用 sprintf() 来演示所有可能的格式值:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // ASCII 字符 50 是 2

// 注释:格式值 "%%" 返回百分号
echo sprintf("%%b = %b",$num1)."<br>"; // 二进制数
echo sprintf("%%c = %c",$char)."<br>"; // ASCII 字符
echo sprintf("%%d = %d",$num1)."<br>"; // 带符号的十进制数
echo sprintf("%%d = %d",$num2)."<br>"; // 带符号的十进制数
echo sprintf("%%e = %e",$num1)."<br>"; // 科学计数法(小写)
echo sprintf("%%E = %E",$num1)."<br>"; // 科学计数法(大写)
echo sprintf("%%u = %u",$num1)."<br>"; // 不带符号的十进制数(正)
echo sprintf("%%u = %u",$num2)."<br>"; // 不带符号的十进制数(负)
echo sprintf("%%f = %f",$num1)."<br>"; // 浮点数(视本地设置)
echo sprintf("%%F = %F",$num1)."<br>"; // 浮点数(不视本地设置)
echo sprintf("%%g = %g",$num1)."<br>"; // 短于 %e 和 %f
echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
echo sprintf("%%o = %o",$num1)."<br>"; // 八进制数
echo sprintf("%%s = %s",$num1)."<br>"; // 字符串
echo sprintf("%%x = %x",$num1)."<br>"; // 十六进制数(小写)
echo sprintf("%%X = %X",$num1)."<br>"; // 十六进制数(大写)
echo sprintf("%%+d = %+d",$num1)."<br>"; // 符号说明符(正)
echo sprintf("%%+d = %+d",$num2)."<br>"; // 符号说明符(负)
?>

例子 4

字符串说明符的演示:

<?php
$str1 = "Hello";
$str2 = "Hello world!";

echo vsprintf("[%s]",array($str1))."<br>";
echo vsprintf("[%8s]",array($str1))."<br>";
echo vsprintf("[%-8s]",array($str1))."<br>";
echo vsprintf("[%08s]",array($str1))."<br>";
echo vsprintf("[%'*8s]",array($str1))."<br>";
echo vsprintf("[%8.8s]",array($str2))."<br>";
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP 面向对象 final类与final方法
May 05 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
Dec 06 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
thinkphp 获取控制器及控制器方法
Apr 16 PHP
PHP number_format函数原理及实例解析
Jul 14 #PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 #PHP
PHP基于array_unique实现二维数组去重
Jul 14 #PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 #PHP
通过实例解析PHP数据类型转换方法
Jul 11 #PHP
PHP var关键字相关原理及使用实例解析
Jul 11 #PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 #PHP
You might like
PHP insert语法详解
2008/06/07 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python字符串str和字节数组相互转化方法
2017/03/18 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
竞选演讲稿范文
2013/12/28 职场文书
销售行政专员职责
2014/01/03 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
医生辞职信范文
2015/03/02 职场文书
电影圆明园观后感
2015/06/03 职场文书
地道战观后感2000字
2015/06/04 职场文书
2016公司年会主持词
2015/07/01 职场文书
小学教师教育随笔
2015/08/14 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python