1

我有一个奇怪的错误

当我运行以下代码时,有时我会得到

Warning: printf(): Too few arguments in /www/api/class.InvoicePayment.inc.php on line 92

但是我不明白为什么会发生这种情况,因为在我的编码中我有这一行

if($output!="")
      printf($output);

即使输出变量不为空,这个 printf 怎么能得到警告..

4

3 回答 3

3

正如James McLeod在第一个答案中所写,也许这可以帮助您:

printf(str_tr($output, '%', '%%');

您需要先转义%字符$output。这是通过%在它们前面添加另一个来完成的。另请参阅解释格式化代码的sprintf手册页文档,特别是这部分:

6. 类型说明符,说明应将参数数据视为何种类型。可能的类型:

  • % - 文字百分比字符。不需要任何参数。

这里的重要信息是 with%%而不是%不需要参数。

但这仅仅是为了解释,最好是你的情况:

print $output;

您不需要在此处进行任何格式化打印,因此请使用printDocs而不是printf.

于 2012-07-18T19:20:35.847 回答
3

如果 $output 包含一个或多个格式说明符,则可能会发生这种情况。你能用 echo 代替 printf 吗?

于 2012-07-17T01:34:40.763 回答
0
 $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-h​​tml-too-few-arguments

于 2015-06-11T09:43:43.283 回答