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 相关文章推荐
可以在线执行PHP代码包装修正版
Mar 15 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
PHP递归的三种常用方式
Feb 28 PHP
Yii框架常见缓存应用实例小结
Sep 09 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php foreach、while性能比较
2009/10/15 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php中strtotime函数性能分析
2016/11/20 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
Jquery 自定义动画概述及示例
2013/03/29 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
vue中监听返回键问题
2019/08/28 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
python pandas cumsum求累计次数的用法
2019/07/29 Python
Python request操作步骤及代码实例
2020/04/13 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
妇科医生自荐信
2013/11/05 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
详解pytorch创建tensor函数
2022/03/22 Python