%s
是什么意思? 它在while循环中的print_f()
函数中,在至少前几个代码块中都有。
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
%s
是什么意思? 它在while循环中的print_f()
函数中,在至少前几个代码块中都有。
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
使用printf或sprintf时,由%符号前导的字符被称为占位符(或令牌)。它们将被传递作为参数的变量所替换。
示例:
$str1 = 'best';
$str2 = 'world';
$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;
这将输出:
Tivie是世界上最好的!
注意:还有更多的占位符(%s表示字符串,%d表示十进制数字等)
顺序:
传递参数的顺序很重要。如果你把$ str1和$ str2切换,那么输出结果也会改变。
$say = sprintf('Tivie is the %s in the %s!', $str2, $str1);
它将打印
"Tivie是最好的世界!"
但是,您可以像这样更改参数的读取顺序:
$say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);
这将正确地打印句子。
另外需要注意的是,PHP是一种动态语言,不需要(也不支持)显式类型定义。这意味着它根据需要调整变量类型。在sprint中,这意味着如果您将“字符串”作为数字占位符(%d)的参数传递,该字符串将被转换为数字(int、float等),这可能会导致奇怪的结果。以下是一个示例:
$onevar = 2;
$anothervar = 'pocket';
$say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
echo $say;
这将会打印
我有2个巧克力在我的0里。
更多相关内容请阅读PHP文档
printf
中的 %s
是用于将数据插入到字符串中的占位符。向 printf
提供的额外参数是要插入的值。它们按照位置与占位符关联: 第一个占位符得到第一个值,第二个得到第二个值,以此类推。
%s
是一种类型说明符,在%s
情况下将替换为值(字符串)。
除了%s
,您还可以使用其他说明符,其中最常见的如下:
d - 参数被视为整数,并显示为(有符号)十进制数。
f - 参数被视为浮点数,并显示为浮点数(区域设置感知)。
s - 参数被视为字符串并显示为字符串。
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
输出结果为:“树上有5只猴子。”
printf()
或sprintf()
函数会将格式化的字符串写入到变量中。
以下是语法:sprintf(format,arg1,arg2,arg++)
格式:
arg1:
arg2:
arg++:
示例1:
$number = 9;
$str = "New York";
$txt = sprintf("There are approximately %u million people in %s.",$number,$str);
echo $txt;
这将输出:
纽约有大约
9
百万人口。
在主字符串中,arg1、arg2、arg++参数将被插入到百分号(%)符号中。该函数是“逐步”工作的。在第一个%符号处,插入arg1,在第二个%符号处,插入arg2,以此类推。
注意:如果%符号多于参数,则必须使用占位符。占位符插入在%符号之后,由参数编号和“\$”组成。让我们看另一个例子:
例2
$number = 123;
$txt = sprintf("With 2 decimals: %1\$.2f
<br>With no decimals: %1\$u",$number);
echo $txt;
这将输出:
保留2位小数:
123.00
不保留小数:123
另一个重要的提示是:
使用
printf()
和sprintf()
函数时,转义字符不是反斜杠 '\',而是百分号 '%'. 例如,如果要打印 '%' 字符,则需要对其进行转义:
printf('%%%s%%', 'Nigeria Naira');
这将输出:
%Nigeria Naira%
欢迎查阅官方PHP文档
sprintf('Tivie is the %s in the %s!', $str2, $str2);
,它会输出"Tivie is the world in the best!
"吗? - Wolfpack'08