PHP sprintf逃避%

时间:2010-09-08 10:24:52

标签: php escaping printf

我想要以下输出: -

  

即将从您的充值帐户中扣除50%的27.59欧元。

当我做这样的事情时: -

$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

但它给了我这个错误vsprintf() [function.vsprintf]: Too few arguments in ...,因为它认为%中的50%也可以替换。我怎么逃避呢?

5 个答案:

答案 0 :(得分:303)

使用其他%

逃脱
$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';

答案 1 :(得分:1)

要在您的语言字符串中添加 %,您只需添加双百分比 %% 而不是一个

答案 2 :(得分:0)

这很容易。

将另一个%放在原始%的前面以逃避它。

例如,

$num=23;
printf("%%d of 23 = %d",$num);

输出:

%d of 23 = 23

答案 3 :(得分:0)

这个怎么样:

$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);

只需在变量数组中添加百分号

即可

答案 4 :(得分:0)

这对我有用:

sprintf(
    '%s (Cash Discount: %%%s, Deferred Discount: %%%s)',
    $segment->name,
    $segment->discount_cash,
    $segment->discount_deferred,
)

// Gold (Cash Discount: %25, Deferred Discount: %20)