% de escape de sprintf de PHP

Resuelto Sandeepan Nath asked hace 54 años • 5 respuestas

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?

Sandeepan Nath avatar Jan 01 '70 08:01 Sandeepan Nath
Aceptado

Escapa con otro %:

$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';
BoltClock avatar Sep 08 '2010 10:09 BoltClock

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
 avatar Jul 02 '2017 23:07

Para agregar %la cadena de su idioma, solo necesita agregar el doble de porcentaje%% en lugar de uno.

MRMP avatar May 24 '2021 14:05 MRMP

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)
Sinan Eldem avatar Dec 08 '2020 14:12 Sinan Eldem