Quero a seguinte saída: -
Prestes a deduzir 50% dos 27,59 € da sua conta de recarga.
quando eu faço algo assim: -
$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);
Mas isso me dá esse erro vsprintf() [function.vsprintf]: Too few arguments in ...
porque considera o %
in 50%
também para substituição. Como eu escapei?
escape
ouescaping
nos doisphp.net/printf
e emphp.net/vsprintf
ambos não mostra a resposta imediatamente. Quando procuro,%%
ele mostra a resposta em php.net/printf, mas eu não sabia%%
!!! Você procurou a resposta lá antes da votação?vsprintf
pertence à mesma família de funções queprintf
. A documentação correta para encontrar o formato, porém, é php.net/sprintf . As duas páginas apontam para ele: "Consulte sprintf () para obter uma descrição do formato". Você pelo menos não clicou?With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
O que há para votar aqui? Não era tão óbvio para mim como era para você. Se você encontrar uma pergunta duplicada, poderá escrever melhor o link. Mas tenho certeza que muitos acharão essa pergunta útil. Mas você não aceita isso e ainda diz algo, eu sei.Respostas:
Escapar com outro
%
:fonte
sprintf('This is %s.', the_title())
str_replace('%', '%%', the_title())
Isso é muito fácil.
Coloque outro
%
na frente do original%
para escapar.Por exemplo,
Resultado:
fonte
Que tal isso:
Basta adicionar seu sinal de porcentagem na sua matriz de variáveis
fonte