%S在PHP,HTML或XML中意味着什么?

Wol*_*'08 33 html php xml string-literals

我正在查看Webmonkey的PHP和MySql教程,第2课.我认为这是一个PHP文字.什么%s意思?print_f()至少在前几个代码块中,它位于while循环中的函数内部.

printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...

Tiv*_*vie 47

printf或sprintf字符前面带有%符号的是占位符(或标记).它们将被作为参数传递的变量替换.

例:

$str1 = 'best';
$str2 = 'world';

$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;
Run Code Online (Sandbox Code Playgroud)

这将输出:

Tivie是世界上最好的!

注意:有更多占位符(%s代表字符串,%d代表dec数字等等)


订购:

传递参数的顺序很重要.如果你用$ str2切换$ str1为

$say = sprintf('Tivie is the %s in the %s!', $str2, $str1); 
Run Code Online (Sandbox Code Playgroud)

它会打印出来

"蒂维是世界上最好的!"

但是,您可以更改这样的参数的阅读顺序:

$say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);
Run Code Online (Sandbox Code Playgroud)

这将正确打印句子.


另外,请记住,PHP是一种动态语言,不需要(或支持)显式类型定义.这意味着它根据需要调整变量类型.在sprint中,这意味着如果您将"string"作为数字占位符(%d)的参数传递,则该字符串将转换为数字(int,float ...),这可能会产生奇怪的结果.这是一个例子:

$onevar = 2;
$anothervar = 'pocket';
$say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
echo $say;
Run Code Online (Sandbox Code Playgroud)

这将打印

我的0中有2个巧克力.

更多阅读PHPdocs

  • 是.虽然您可以根据需要为变量命名,但是它们的传递顺序是重要的.第一个占位符获取第一个传递参数的值,第二个占位符获取第二个参数的值,依此类推.%符号后面的字母告诉sprint它是什么类型的变量(整数,字符串等...) (2认同)

Ned*_*der 12

In printf,%s是一个占位符,用于插入字符串的数据.额外的参数printf是要插入的值.它们在位置上与占位符相关联:第一个占位符获取第一个值,第二个占位符获取第二个值,依此类推.


rdo*_*rdo 6

%s是一个类型说明符,如果是,它将被替换为有价值的值(字符串)%s.

除了%s你可以使用其他说明符,最流行的是:

d - 将参数视为整数,并以(带符号)十进制数表示.

f - 将参数视为浮点数,并显示为浮点数(可识别区域设置).

s - 将参数视为字符串并显示为字符串.