您当前的位置:首页 > 网站建设笔记 >

PHP sprintf()为打印输出而格式化字符串

0

到目前为止,我们已经用echo语言结构将字符串输出到浏览器。PHP也支持print()语句,它实现的功能与echo相同,但具有返回值(true或false,表示成功或失败)。

这两种方法都会打印一个字符串。使用函数printf()和sprintf(),还可以实现一些更复杂的格式。它们的工作方式基本相同,只是printf()函数是将一个格式化的字符串输出到浏览器中,而sprintf()函数是返回一个格式化了的字符串。

string sprintf( string format [, mixed args...])
void printf( string format [, mixed args...])

传递给这两个函数的第一个参数都是字符串格式,它们使用格式代码而不是变量来描述输出字符串的基本形状。其他的参数是用来替换格式字符串的变量。

可以在格式化字符串中使用多个转换说明。如果有n个转换说明,在格式化字符串后面就应该带有n个参数。每个转换说明都将按给出的顺序被一个重新格式化过的参数代替。

每一个转换说明都遵循同样的格式,如下所示:
%['padding_character][-][width][.precision]type

  • 所有的转换说明都以%开始。如果想打印一个“%”符号,必须使用“%%”。
  • 参数padding_character是可选的。它将被用来填充变量直至所指定的宽度。该参数的作用就像使用计算器那样在数字前面加零。默认的填充字符是一个空格,如果指定了一个空格或0,就不需要使用“'”作为前缀。对于任何其他的填充字符,必须指定“'”作为前缀。
  • 字符“-”是可选的。它指明该域中的数据应该左对齐,而不是默认的右对齐。
  • 参数width告诉printf()函数在这里为将被替换的变量留下多少空间(按字符计算)。
  • 参数precision表示必须是以一个小数点开始。它指明了小数点后面要显示的位数。
  • 转换说明的最后一部分是一个类型码。

对于4.0.6版本来说,可以使用带序号的参数方式,这就意味着参数的顺序并不一定要与转换说明中的顺序相同。例如:

printf("Total amount of order is %2\$.2f (width shipping %1\$.2f)", $total_shipping, $total)

只要直接在“%”符号后添加参数的位置,并且以$符号为结束——在这个例子中,“2\$”意味着“用列表中的第二个参数替换”。这个方法也可以在重复参数中使用。

这些函数还有两种可替换的版本,分别是vprintf()和vsprintf()。这些变体函数接收两个参数:格式字符串和参数数组,而不是可变数量的参数。

顶部中部底部