% de escape de sprintf de PHP
Quiero el siguiente resultado: -
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 puedo escapar de él?
Aceptado
Escapa con otro %
:
$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';
Es muy fácil.
Pon otro %
delante del original %
para escaparlo.
Por ejemplo,
$num=23;
printf("%%d of 23 = %d",$num);
Producción:
%d of 23 = 23
Para agregar %
la cadena de su idioma, solo necesita agregar el doble de porcentaje%%
en lugar de uno.
Esto funciona para mí:
sprintf(
'%s (Cash Discount: %%%s, Deferred Discount: %%%s)',
$segment->name,
$segment->discount_cash,
$segment->discount_deferred,
)
// Gold (Cash Discount: %25, Deferred Discount: %20)