sprintf()

1. 定义

该函数返回被格式化后的字符串

注:

  • 该函数与printf()不同的地方在于:
    • sprintf()函数不直接输出被格式化后的字符串
    • sprintf()函数返回被格式化后的字符串,而printf()则返回被格式化后的字符串的长度

2. 语法

srintf ( string $format [, mixed $args [, mixed $... ]] ) : string

3. 参数说明

参数 可选性 数据类型 描述
$format 必需 字符串 参数格式,例如%s\t%d
$args 可选 mixed 需要被格式化的字符串

其中$format的格式为:%[flags][width][.precision]specifier

flags的值有五种:

  • -:表示输出时为左对齐,默认为右对齐
  • +:用加号+前缀正数;默认仅为负数,前缀为负号
  • 空格:默认用空格填充结果(位数)
  • 0:左边的数字使用0填充,如果是字符串也可以用0填充右边的内容
  • ':使用单引号包裹的字符,可以被用来填充结果

width表示允许最长输出的位数。

precision根据标识符的不同含义也不同:

  • 对于eEfF标识符来说,该值表示小数点后保留的位数
  • 对于gG标识符来说,该值表示允许被输出的最大有效位数
  • 对于s标识符来说,该值表示允许被输出的最大字符数
specifier标识符 说明
% 字面量百分号
b 二进制整数
c ASCII码字符
d 带符号(正负号)的十进制整数
e 科学计数法数
E 使用大写字母E表示的科学计数法
f 带本地属性的浮点数
F 不带本地属性的浮点数
g 总位数超过14位时,将转为科学计数法(E)表达,后面的值被忽略
G g一样
o 十进制整数
s 字符串
u 无符号十进制整数
x 小写形式的十六进制整数
X 大写形式的十六进制整数

4. 示例

<?php

// sprintf()
// 返回被格式化后的字符串(不输出内容)

$str1 = '极速教程';
$str2 = 'https://www.jisuapi.com/';
$format = "网站名称:%s\n网址:%s";
$res = sprintf($format, $str1, $str2);
var_dump($res);
/* 输出:
string(61) "网站名称:极速教程
网址:https://www.jisuapi.com/"
*/

5. 延展阅读

  • printf():将字符串按某种特定格式输出。返回被格式化后的字符串长度
  • fprintf():将格式化后的字符串写入到已打开的文件句柄。返回成功写入的字符串长度
  • vprintf():输出被格式化后的字符串,并返回输出字符串的长度
  • vsprintf():返返回被格式化后的字符串
  • vfprintf():将已格式化的字符串写入到已打开的文件句柄
  • sscanf():根据指定格式解析字符串
  • fscanf():以特定格式来匹配已打开的文件句柄中的一行字符串,每个格式按空白符(包括制表符)隔开,最后返回按格式解析后的数组结果
  • number_format():将一个数字以千位分隔符的方式格式化
  • date():格式化一个本地时间或日期