PHP sprintf escapando%
Frecuentes
Visto 86,258 equipos
195
Quiero la siguiente salida: -
A punto de descontar el 50% de 27.59 € de tu cuenta 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 el %
in 50%
también para reemplazo. ¿Cómo escapo de ella?
4 Respuestas
374
Escapa con otro %
:
$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';
Respondido el 08 de Septiembre de 10 a las 11:09
sprintf ("SELECCIONAR * DESDE ... DONDE nombre LIKE '%%% s %%% s %%'", $ fname, $ lname); - ¡Feo pero funciona! - Jan Hettich
puedes agregar esa parte con otro "% s": sprintf ('de% s puedes obtener% s', 'algo', '50% ') - Lukas Liesis
¿Cómo se escapa si la cadena es dinámica? Digamos, sprintf('This is %s.', the_title())
- Budji
@madastro str_replace('%', '%%', the_title())
- ivanka todorova
5
Es muy fácil.
Pon otro %
delante del original %
para escapar de ella.
Por ejemplo,
$num=23;
printf("%%d of 23 = %d",$num);
Salida:
%d of 23 = 23
Respondido 03 Jul 17, 00:07
0
¿Qué pasa con esto?
$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);
Simplemente agregue su signo de porcentaje en su matriz de variables
Respondido 01 Oct 17, 15:10
La pregunta era cómo hacer sprintf escapando%. - fatalista
0
Esto funciona para mi:
sprintf(
'%s (Cash Discount: %%%s, Deferred Discount: %%%s)',
$segment->name,
$segment->discount_cash,
$segment->discount_deferred,
)
// Gold (Cash Discount: %25, Deferred Discount: %20)
Respondido el 08 de diciembre de 20 a las 14:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php escaping printf or haz tu propia pregunta.
@Columna. Shrapnel Mi pregunta es sobre vsprintf not printf, estoy usando esto por primera vez y no puedo asumir la similitud entre los dos. Sin embargo, buscando
escape
orescaping
en ambosphp.net/printf
yphp.net/vsprintf
ambos no muestran la respuesta de inmediato. Cuando busco%%
muestra la respuesta en php.net/printf pero no conocía%%
!!! ¿Buscó la respuesta allí antes de votar en contra? - Sandeepan Nath@sandeepan:
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: "Consulte sprintf () para obtener una descripción del formato". ¿No hiciste al menos clic en él? - BoltClock♦@Columna. Metralla está bien, tomemos php.net/sprintf, ¿dónde está la respuesta? Está en la mitad de la página.
With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
¿Qué hay para rechazar aquí? No fue 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 lo aceptará y todavía dirá algo, lo sé. - Sandeepan Nathoh, pensé que el segundo comentario era del coronel Shrapnel, lo siento - Sandeepan Nath
SO debería tener una bandera para las respuestas RTFM. Es casi como si la gente hiciera un troll para poder decirle a la gente que lea los documentos. Necesitaba ayuda e hizo una pregunta y luego alguien respondió amablemente y obtuvo puntos por ello. El mundo continuó y se utilizó Internet en beneficio de alguien. Mientras tanto, me acaloro por una discusión de dos años. - rob5408