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

实例

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

<?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>";
?>

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

时间: 2020-07-14

PHP number_format函数原理及实例解析

实例1 格式化数字: <?php echo number_format("1000000").""; echo number_format("1000000",2).""; echo number_format("1000000",2,",","."); ?> 定义和用法 number_format() 函数通过千位分组来格式化数字. 注释:该函数支持一个

header函数设置响应头解决php跨域问题实例详解

设置允许访问的域名: 1.允许全部的域名访问 header("Access-Control-Allow-Origin:*"); 2.允许指定域名访问 header( 'Access-Control-Allow-Origin:http://a.test.com' ); 设置允许访问的请求方式: 1.一种或者多种 header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); 2.全部 header('Access-Contr

PHP实现单文件、多个单文件、多文件上传函数的封装示例

本文实例讲述了PHP实现单文件.多个单文件.多文件上传函数的封装.分享给大家供大家参考,具体如下: 表单: s.php 要在选择上传文件时能一次选择多个文件,那么就加multiple="multiple" ,还有注意下name="myFile1"和name="myFile[]"的区别,单文件.多文件上传. <!doctype html> <html> <head> <meta charset="

PHP常用函数之获取汉字首字母功能示例

本文实例讲述了PHP常用函数之获取汉字首字母功能.分享给大家供大家参考,具体如下: //获取汉字的首字母 function getFirstCharters($str) { if (empty($str)) { return ''; } //取出参数字符串中的首个字符 $temp_str = substr($str,0,1); if(ord($temp_str) > 127){ $str = substr($str,0,3); }else{ $str = $temp_str; $fchar =

PHP函数参数传递的方式整理

在调用函数时,需要向函数传递参数,被传入函数的参数称为实参,而函数定义的参数称为形参.而向函数传递参数的方式有四种,分别是值传递.引用传递.默认参数和可变长度参数. 1. 值传递 值传递是 PHP 中函数的默认传值方式,也称为"拷贝传值".顾名思义值传递的方式会将实参的值复制一份再传递给函数的形参,所以在函数中操作参数的值并不会对函数外的实参造成影响.因此如果不希望函数修改实参的值,就可以通过值传递的方式. [示例]下面定义一个简单的函数,函数有两个参数,在函数中交换参数的值. <

PHP array_reverse() 函数原理及实例解析

array_reverse (PHP 4, PHP 5, PHP 7) array_reverse-返回单元顺序相反的数组 说明 array_reverse(array$array[,bool$preserve_keys=FALSE] ) :array array_reverse()接受数组array作为输入并返回一个单元为相反顺序的新数组. 参数 array 输入的数组 preserve_keys 如果设置为TRUE会保留数字的键. 非数字的键则不受这个设置的影响,总是会被保留. 返回值 返回

PHP正则表达式函数preg_replace用法实例分析

本文实例讲述了PHP正则表达式函数preg_replace用法.分享给大家供大家参考,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (pattern ,replacement ,subject,limit,count ) 参数 描述 pattern 正则表达式(字符串或字符串数组) replacement 用于替换的字符串或字符串数组 subject 要进行搜索和替换的字符串或字符串数组. limit 可选.每个模式在每个subject上进

php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析

本文实例讲述了php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法.分享给大家供大家参考,具体如下: php函数function_exists (),method_exists() 与is_callable()的区别在哪? 先来讲下后两个:method_exists() 与is_callable(): 在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 metho

php empty 函数判断结果为空但实际值却为非空的原因解析

最近我在一个项目中使用 empty 时获取到了一些意料之外的结果.下面是我处理后的调试记录,在这里与你分享了. var_dump( $person->firstName, empty($person->firstName) ); 它的结果是: string(5) "Freek" bool(true) 结果出人意料.为什么变量的值为字符串,但同时会是空值呢?让我们在 $person->firstName 变量上尝试使用其它一些函数来进行判断吧: var_dump( $p

AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)

本文实例讲述了AngularJS实现用户登录状态判断的方法.分享给大家供大家参考,具体如下: 使用AngularJS的单页面应用时,由于是本地路由在控制页面跳转,但是有的时候我们需要判断用户是否登录来判断用户是否能进入界面. angularjs是mvc架构所以实现起来很容易也很灵活,我们只MainController里增加一个路由事件侦听并判断,这样就可以避免未登录用户直接输入路由地址来跳转到登录界面地址了 代码中的 $rootScope.user是登录后把用户信息放到了全局rootScope上

详谈Java中Object类中的方法以及finalize函数作用

Object是所有类的父类,任何类都默认继承Object. 一.Object类中的方法 1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常. 主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法. 2.getClass方法 final方法,获得运行时类型. 3.toString方法 该方法

javascript 判断整数方法分享

判断整数的方法有两种:正则判断和逐字判断. 由于逐字判断效率过于低下,这里就不予描述了,有兴趣的看客可以自己谷歌. 1.正则判断 复制代码 代码如下: var r = /^\+?[1-9][0-9]*$/; //正整数 console.log(r.test(1.23)); 效果测试: http://jsfiddle.net/wzsdp9Lc/ 扩展功能列表 复制代码 代码如下: "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$&quo

js判断某个方法是否存在实例代码

本文实例讲述了js判断某个方法是否存在的代码.分享给大家供大家参考. 具体代码如下: 复制代码 代码如下: <html> <head> <title> js判断某个方法是否存在</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <script type="text/javascript&q

jQuery的load()方法及其回调函数用法实例

本文实例讲述了jQuery的load()方法及其回调函数用法.分享给大家供大家参考.具体如下: 下面的js代码演示了jQuery的load()方法的使用,并演示了带回调函数(callback)的load方法的使用 <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(fun

给jQuery方法添加回调函数一款插件的应用

插件源码 jquery.callback.js 插件开源地址: https://gist.github.com/4580276 复制代码 代码如下: /** * @fileOverview 本插件用于给jQuery方法添加回调函数,可在类方法或实例方法添加任何自定义的回调函数而不影响原方法的行为 * @dependency jQuery1.7+  * @author huhai * @since 2013-01-21 */ (function($){ $._callbacks = {}; $._

jQuery实现表单提交时判断的方法

本文实例讲述了jQuery实现表单提交时判断的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <input type="submit" id="myBtn" /> 换成: 复制代码 代码如下: <input type="button" id="myBtn" /> 使用: 复制代码 代码如下: $("#myBtn").click(function(){    ..

yii2 RBAC使用DbManager实现后台权限判断的方法

本文实例讲述了yii2 RBAC使用DbManager实现后台权限判断的方法.分享给大家供大家参考,具体如下: 首先根据文档生成yii2 框架中的表 yii migrate --migrationPath=@yii/rbac/migrations/ 生成如下4表: auth_assignment auth_item_child auth_item auth_rule 使用yii的gii快速生成对应的model,但是由于auth_item表同时存储角色跟权限,由于后面我们要分角色跟权限来做curd

解析php函数method_exists()与is_callable()的区别

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable(),相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数.数组必须包含对象或类名,以将其作