输出字符串格式化
// 根据格式化字符串$format生成一个新字符串,$values与格式化字符串中的格式化字符一一对应
sprintf($format, ...$values);
var_dump(sprintf('this is %s,age is %d', 'lilei', 18));
格式化字符串写入文件
// 将根据$format格式化的字符串写入文件资源$handle,字符串参数的数量与$format中的格式化数量一一对应
$fp = fopen('C:\Users\Administrator\Desktop\1.txt', 'w+');
fprintf($handle = $fp, $format = '%020d-%10d-%f-%x', '1', '2', '3', '123');
format格式化字符串
// 格式字符串由零个或多个指令组成,原型 %[argnum$][flags][width][.precision]specifier
$argnum = 0; // 一个整数,后跟一个符号$,以指定要在转换中处理的$number参数。
$flags = [
'-', // 左对齐;默认右对齐
'+', // 正数前加一个+号
' ', // 用空格填充结果
'0', // 用零填充数字
"'", // 用字符'填充结果
];
$width = 0; // 一个整数,表示此转换应产生的字符数(最小值)
$precision; // 句点.后跟一个整数,其含义取决于说明符
// e,E,f和F说明符:小数点后的位数(默认6)
// g,G,h和H说明符:最大数目
// s说明符:字符串最大字符限制
$specifier = [
'%', // 文字百分比字符。不需要任何参数。
'd', // 参数被视为整数,并以(有符号)十进制数表示。
'u', // 参数被视为整数,并以(无符号)十进制数形式出现。
'b', // 参数被视为整数,并以二进制数表示。
'o', // 参数被视为整数,并以八进制数表示。
'x', // 参数被视为整数,并以十六进制数字(带有小写字母)的形式表示。
'X', // 参数被视为整数,并以十六进制数字(带有大写字母)的形式呈现
'c', // 参数被视为整数,并以该ASCII形式显示为字符。
'e', // 参数被视为科学记数法(例如1.2e+2)。
'E', // 参数被视为科学记数法,但使用大写字母(例如1.2E+2)。
'f', // 参数被视为浮点数,并显示为浮点数(可识别语言环境)。
'F', // 参数被视为浮点数,并显示为浮点数(不支持区域设置)
's', // 参数被视为字符串显示。
'g', // 通用格式。如果非零,则使P等于精度;如果省略精度,则使P等于6;如果精度为零,则使P等于1。如果样式E的转换的指数为X:如果P>X≥-4,则转换采用样式f和精度P−(X + 1)。否则,将使用样式e和精度P−1进行转换。
'G', // 类似于说明g符,但使用E和f。
'h', // 类似于说明g符,但使用F。自PHP 8.0.0起可用。
'H', // 类似于说明g符,但使用E和F。自PHP 8.0.0起可用。
];
数字格式化
// 将小数$number保留$decimals位小数以千位分隔符格式化;$dec_point为小数点字符,$thousands_sep为千位分隔符
number_format($number, $decimals = 0, $dec_point = '.', $thousands_sep = ',');
金额格式化
// 设置金额格式化的地区
setlocale(LC_MONETARY, 'en_US');
// 将金额$number以$format格式化为货币字符串,windows不支持
money_format($format, $number);
// $format由以下部分组成
// 单个%字符
// 可选的标记(flags),标记可多选
$flags = [
'=f', // 使用f将金额填充到指定长度,默认为空格填充
'^', // 禁用分组字符(比如金额中的逗号)
'+/(', // 正负数的格式;+表示:负数以+/-显示,正数不显示+,默认为+;(表示:负数以()包括,不显示负号
'!', // 不输出货币符号
'-', // 左对齐(默认右对齐),填充将填充在右侧(默认左侧)
];
// 可选的字段宽度
$w = 0; // 十进制数值字符串的宽度。默认值0
// 可选的,左侧精度
$lprecision = '#n'; // 小数字符前的最大位数;位数小于n时将使用填充字符填满,大于n时没有处理;分组字符不计入填充数量
// 可选的,右侧精度
$rprecision = '.p'; // 小数字符后的最大位数(p),会进行四舍五入
// 必选的,单个转化字符
$conversions = [
'i', // 根据国际化区域设置中的货币格式,格式化数值(比如,locale是USA:USD 1,234.56)
'n', // 根据国际化区域设置中国家的货币格式,格式化数值(比如,locale是de_DE:EU1.234,56)
'%', // 返回字符串%
];