我有一个奇怪的错误
当我运行以下代码时,偶尔我会得到
Warning: printf(): Too few arguments in /www/api/class.InvoicePayment.inc.php on line 92
但是我不明白为什么会发生这种情况,因为在我的编码中,我将这一行作为
if($output!="")
printf($output);
即使输出变量不为空,这个 printf 怎么会得到警告..
如果$output包含一个或多个格式说明符,则可能会发生这种情况。你能用回声代替 printf 吗?
正如詹姆斯·麦克劳德(James McLeod(在第一个答案中所写的那样,也许这对您有所帮助:
printf(str_tr($output, '%', '%%');
您需要先转义$output
的%
字符。这是通过在它们前面添加另一个%
来完成的。另请参阅sprintf
手册页文档,其中解释了格式代码,特别是这一部分:
6. 一个类型说明符,说明参数数据应被视为哪种类型。可能的类型:
- % - 文字百分比字符。不需要任何参数。
这里的重要信息是,使用%%
而不是%
不需要参数。
但这仅仅是为了解释,最好是你的情况:
print $output;
您不需要在此处进行任何格式化打印,因此请使用print
文档而不是printf
。
$replyTemplate = '<div class="module_content">
<fieldset style="width:100%%; float:left;">
<table width="100%%" align="center" border="1">
<tr>
<td width="15%%">
<h3>%s</h3>
</td>
<td width="85%%">
<h3>2015/06/11 09:06</h3>
<h4>%s</h4>
</td>
</tr>
</table>
</fieldset><div class="clear"></div>
</div>';
并使用 sprintf 代替 printf。
示例来自 : https://stackoverflow.com/questions/30776376/using-printf-to-format-html-too-few-arguments