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.引数データをどのタイプとして扱うべきかを示すタイプ指定子。可能なタイプ:

  • %-リテラルのパーセント文字。引数は必要ありません。

ここでの重要なメッセージは、引数なし%%ではなく、%引数が必要ないということです。

しかし、それは単に説明のためであり、あなたの場合はより良いです:

print $output;

ここではフォーマットされた印刷を行う必要がないため、の代わりにprintドキュメントprintfを使用してください。

于 2012-07-18T19:20:35.847 に答える
3

これは、$output に 1 つ以上の書式指定子が含まれている場合に発生する可能性があります。printf の代わりに echo を使用できますか?

于 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>';

printf の代わりに sprintf を使用します。

例: https://stackoverflow.com/questions/30776376/using-printf-to-format-h​​tml-too-few-arguments

于 2015-06-11T09:43:43.283 に答える