Я хочу следующий вывод: -
Около 50% от € 27,59 с вашего счета пополнения.
когда я делаю что-то вроде этого:
$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%
также для замены. Как мне избежать этого?
escape
илиescaping
в обоихphp.net/printf
и вphp.net/vsprintf
обоих случаях не показывает ответ сразу. Когда я ищу,%%
он показывает ответ в php.net/printf, но я не знал об этом%%
!!! Вы искали ответ там перед голосованием?vsprintf
принадлежит к тому же семейству функций, что иprintf
. Правильная документация для поиска формата - php.net/sprintf . Обе страницы даже указывают на это: «Смотрите sprintf () для описания формата». Вы хотя бы щелкнули по нему?With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
Что здесь внизу? Это было не так очевидно для меня, как для вас. Если вы найдете повторяющийся вопрос, вам лучше написать ссылку. Но я уверен, что многие найдут этот вопрос полезным. Но вы не примете это, и вы все равно что-то скажете, я знаю.Ответы:
Побег это с другим
%
:источник
sprintf('This is %s.', the_title())
str_replace('%', '%%', the_title())
Это очень просто.
Поставьте еще один
%
перед оригиналом,%
чтобы избежать его.Например,
Вывод:
источник
Как насчет этого:
Просто добавьте знак процента в массив переменных
источник