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数组总结篇(一)
Sep 30 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
php实现分页工具类分享
Jan 09 PHP
php实现的Cookies操作类实例
Sep 24 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 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 获取mysql数据库信息代码
2009/03/12 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
Yii rules常用规则示例
2016/03/15 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python中如何写类
2020/06/29 Python
基于opencv实现简单画板功能
2020/08/02 Python
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
日期和时间问题
2015/01/04 面试题
会计助理的岗位职责
2013/11/29 职场文书
大学生创业项目方案
2014/03/08 职场文书
担保书怎么写
2014/04/01 职场文书
电钳工人个人求职信
2014/05/10 职场文书
银行求职信模板
2015/03/20 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL