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实现MySQL更新记录的代码
Jun 07 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
PHP遍历二维数组的代码
Apr 22 PHP
PHP异步调用socket实现代码
Jan 12 PHP
写出高质量的PHP程序
Feb 04 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
PHP计数器的实现代码
Jun 08 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
Jul 01 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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查询附近的人及其距离的实现方法
2016/05/11 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
jQuery.each使用详解
2015/07/07 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
github配置使用指南
2014/11/18 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
python实现机器人行走效果
2018/01/29 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
深入浅析Python传值与传址
2018/07/10 Python
python中Lambda表达式详解
2019/11/20 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
酒店管理求职信范文
2014/04/06 职场文书
大学活动总结格式
2014/04/29 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
高三复习计划
2015/01/19 职场文书