我正在查看Webmonkey's PHP and MySql Tutorial, Lesson 2。我认为这是一个PHP文字。 %s
是什么意思?它位于print_f()
函数的while循环中,至少在第一对代码块中。%S在PHP,HTML或XML中的含义是什么?
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
我正在查看Webmonkey's PHP and MySql Tutorial, Lesson 2。我认为这是一个PHP文字。 %s
是什么意思?它位于print_f()
函数的while循环中,至少在第一对代码块中。%S在PHP,HTML或XML中的含义是什么?
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;
这将打印
我在0
更多阅读2巧克力(S)在PHPdocs
在printf
,%s
是为将要插入到字符串数据的占位符。 printf
的额外参数是要插入的值。他们在位置上与占位符关联:第一个占位符获取第一个值,第二个占位符获取第二个值,依此类推。
'+ 1' - 顺便说一句,正确的术语是字符串插值。 – 2012-07-24 02:27:29
显然,与C的'printf'语法相同。 – 2012-07-24 02:30:46
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
将输出:“树中有5只猴子。”
感谢您的编辑,Ned。我进行了四次编辑,但仍然无法正常工作。 Markdown一定已经搞砸了一秒钟。 – David 2012-07-24 02:28:01
这是一个非常好的答案,值得更多的关注。 – 2014-06-23 23:46:36
直接从PHP手册:) – 2016-07-20 12:17:07
%s
是一个类型说明符,在%s
的情况下将被替换为有价值的值(字符串)。
此外%s
您可以使用其他specifiers,最流行的是如下:
d - 参数被视为一个整数,并作为一个(签字)十进制数。
f - 将参数视为浮点数,并将其表示为浮点数(区域设置为 )。
s - 参数被视为字符串并呈现。
我认为你的例子与奈德的解释一起作出一个相当可靠的答案。问题:如果我写'sprintf('Tivie是%s!中的%s!',$ str2,$ str2);',它会回应吗?'Tivie是最好的世界! – 2012-07-24 03:12:24
自从str2 = world以后,它会输出“Tivie是世界的世界”, – Tivie 2012-07-27 09:42:39
Hooray是错字的。我笑了起来。所以'%strn'返回'%s [n]'的值,可以这么说吗?用同样的符号,'%s%s'返回'%s [0]%s [1]'的值? – 2012-07-28 05:27:51