web-dev-qa-db-ja.com

PHP sprintfエスケープ%

次の出力が必要です:-

トップアップアカウントから27.59ユーロの50%を差し引きます。

私がこのようなことをするとき:-

$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

しかし、%50%も置換のために考慮するため、このエラーvsprintf() [function.vsprintf]: Too few arguments in ...が発生します。どうすれば脱出できますか?

166
Sandeepan Nath

別の%でエスケープします:

$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';
312
BoltClock

それは非常に簡単です。

元の%の前に別の%を置いてエスケープします。

例えば、

$num=23;
printf("%%d of 23 = %d",$num);

出力:

%d of 23 = 23
0
user8228837

これはどうですか:

$variablesArray[0] = '%';
$variablesArray[1] = '€';
$variablesArray[2] = 27.59;
$stringWithVariables = 'About to deduct 50%s of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

変数配列にパーセント記号を追加するだけです

0
3eighty