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中去除所有js,html,css代码
Oct 12 PHP
从手册去理解分析PHP session机制
Jul 17 PHP
input file获得文件根目录简单实现
Apr 26 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
实现获取http内容的php函数分享
Feb 16 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php中static和const关键字用法分析
Dec 07 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
php的扩展写法总结
May 14 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP 加密解密内部算法
2010/04/22 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
vue项目实现github在线预览功能
2018/06/20 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
Python网络爬虫实例讲解
2016/04/28 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
python增加图像对比度的方法
2019/07/12 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
pandas数据拼接的实现示例
2020/04/16 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
校运会入场式解说词
2014/02/10 职场文书
环保建议书作文
2014/03/12 职场文书
市场营销毕业求职信
2014/08/07 职场文书
三严三实对照检查材料
2014/09/22 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL