PHP - 警告:printf():参数太少奇怪的问题

时间:2012-07-17 00:46:40

标签: php

我有一个奇怪的错误

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

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

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

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

即使输出变量不为空,这个printf如何得到警告..

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

正如first answer by James McLeod中所写的那样,也许可以帮到你:

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

您需要首先转发% $output个字符。这是通过在他们面前添加另一个%来完成的。另请参阅解释格式代码的sprintf manual page­Docs,特别是此部分:

  

6。一个类型说明符,说明参数数据应该被视为什么类型。可能的类型:

     
      
  • % - 字面百分比字符。不需要参数。
  •   

这里的重要信息是%%代替%,不需要参数。

但这只是为了解释,在你的情况下更好:

print $output;

您无需在此处进行任何格式化打印,因此请使用print­Docs代替printf

答案 2 :(得分: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-html-too-few-arguments