PHP sprintf escaping%

Мне нужен следующий вывод: -

О том, чтобы вычесть 50% € 27,59 из вашей учетной записи Top-Up.

когда я делаю что-то вроде этого: -

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

Но это дает мне эту ошибку vsprintf() [function.vsprintf]: Too few arguments in ..., потому что она рассматривает % в 50% также для замены. Как мне избежать этого?

Ответ 1

Побег с другим %:

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

Ответ 2

Это очень просто.

Поместите еще один % перед исходным %, чтобы избежать его.

Например,

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

Вывод:

%d of 23 = 23

Ответ 3

Как насчет этого:

$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);

Просто добавьте свой знак процента в свой массив переменных