使用比提供的值更少的占位符调用 sprintf() 是否安全?

问题描述 投票:0回答:1

我只是想知道省略 sprintf 的参数是否会导致任何问题。

我记不清了,但我认为在我的一个网站上,如果我省略了参数,它就会出错,但我在另一台服务器上尝试过,并且它没有在打开所有 php 错误通知的情况下发布任何问题。

只是想仔细检查一下!

示例:

sprintf('This is an example %s','test'); // outputs "This is an example test"
sprintf('This is an example','test'); // outputs "This is an example"
php printf
1个回答
1
投票

如果传递的参数太少会出错,但传递太多也可以。 就像 PHP 的其余部分一样,如果传递太多参数,它们将被忽略。

$ php -r "echo sprintf('foo %s');"
PHP Warning:  printf(): Too few arguments in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. printf() Command line code:1

Warning: printf(): Too few arguments in Command line code on line 1

Call Stack:
    0.0005     314336   1. {main}() Command line code:0
    0.0006     314408   2. printf() Command line code:1

$ php -r "printf('foo %s', 'foo', 'bar');"
foo foo
© www.soinside.com 2019 - 2024. All rights reserved.