Quiero el siguiente resultado: -
A punto de deducir el 50% de € 27.59 de su cuenta de Top-Up.
cuando hago algo como esto:
$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);
Pero me da este error vsprintf() [function.vsprintf]: Too few arguments in ...
porque considera que el %
de 50%
también para su sustitución. ¿Cómo me escapo?
escape
oescaping
en ambosphp.net/printf
y enphp.net/vsprintf
ambos no muestra la respuesta de inmediato. Cuando busco%%
que muestra la respuesta en php.net/printf pero yo no sabía nada%%
!!! ¿Buscó la respuesta allí antes de votar?vsprintf
pertenece a la misma familia de funciones queprintf
. Sin embargo, la documentación correcta para encontrar el formato es php.net/sprintf . Ambas páginas incluso lo señalan: "Ver sprintf () para una descripción del formato". ¿Al menos no lo hiciste clic?With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
¿Qué hay para votar abajo aquí? Simplemente no era tan obvio para mí como lo fue para ti. Si encuentra una pregunta duplicada, puede escribir mejor el enlace. Pero estoy seguro de que muchos encontrarán útil esta pregunta. Pero no aceptará eso y aún dirá algo, lo sé.Respuestas:
Escápelo con otro
%
:fuente
sprintf('This is %s.', the_title())
str_replace('%', '%%', the_title())
Es muy fácil.
Pon otro
%
delante del original%
para escapar.Por ejemplo,
Salida:
fuente
¿Qué hay de esto?
Simplemente agregue su signo de porcentaje en su matriz de variables
fuente