37

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

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

4

5 回答 5

60

以 % 符号开头的 printf 或 sprintf 字符是占位符(或标记)。它们将被作为参数传递的变量替换。

例子:

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

$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;

这将输出:

蒂维是世界上最好的!

注意:还有更多的占位符(%s 代表字符串,%d 代表十进制数,等等...)


命令:

传递参数的顺序很重要。如果您将 $str1 与 $str2 切换为

$say = sprintf('Tivie is the %s in the %s!', $str2, $str1); 

它会打印

“蒂维是世界上最好的!”

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

$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 块巧克力。

更多阅读PHPdocs

于 2012-07-24T02:29:31.083 回答
12

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

于 2012-07-24T02:22:40.693 回答
6

%s是一个类型说明符,在%s.

除了%s您可以使用其他说明符之外,最受欢迎的如下:

d - 参数被视为整数,并显示为(有符号的)十进制数。

f - 参数被视为浮点数,并显示为浮点数(区域设置感知)。

s - 参数被视为并呈现为字符串。

于 2012-07-24T02:28:19.227 回答
3
$num = 5; 
$location = 'tree';

$format = 'There are %d monkeys in the %s'; 
echo sprintf($format, $num, $location); 

将输出:“树上有 5 只猴子。”

于 2012-07-24T02:24:18.687 回答
1

printf()or函数将sprintf()格式化的字符串写入变量。这是语法:

sprintf(format,arg1,arg2,arg++)

格式:

  • %% - 返回一个百分号
  • %b - 二进制数
  • %c - 根据 ASCII 值的字符
  • %d - 有符号十进制数(负数、零或正数)
  • %e - 使用小写的科学记数法(例如 1.2e+2)
  • %E - 使用大写的科学记数法(例如 1.2E+2)
  • %u - 无符号十进制数(等于或大于零)
  • %f - 浮点数(本地设置感知)
  • %F - 浮点数(不支持本地设置)
  • %g - %e 和 %f 中的较短者
  • %G - %E 和 %f 中的较短者
  • %o - 八进制数
  • %s - 字符串
  • %x - 十六进制数(小写字母)
  • %X - 十六进制数(大写字母)

参数1

  • 要在格式字符串的第一个% 符号处插入的参数..(必需。)

参数2

  • 要在格式字符串中的第二个% 符号处插入的参数。(选修的)

参数++

  • 要在第三个、第四个等处插入的参数% - 格式字符串中的符号(可选)

示例 1:

$number = 9;
$str = "New York";
$txt = sprintf("There are approximately %u million people in %s.",$number,$str);
echo $txt;

这将输出:

大约有9百万人New York

arg1arg2arg++参数将插入到主字符串中的百分号 (%) 处。此功能“逐步”工作。在第一个 % 符号处插入 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()andsprintf()函数,转义字符不是反斜杠'\'而是'%'。IE。要打印 '%' 字符,您需要自行对其进行转义:

printf('%%%s%%', 'Nigeria Naira');

这将输出:

%尼日利亚奈拉%

随意探索官方PHP 文档

于 2019-03-20T21:46:54.393 回答