我想在字符串乘以变量后替换字符串中的数字。我有以下 PHP:
$desc = "+2.23% critical damage";
$count = 3;`
现在我想在新字符串中使用 $count * $desc
的值,如下所示:
$sum = "+6.69% critical damage";
我该如何管理?如何将此字符串中的数字乘以$count
?
三种可能性。
丑陋如地狱,但工作(在字符串上使用floatval()
):
<?php
$desc = "+2.23% critical damage";
$count = 3;
$sum = floatval($desc) * $count . "% critical damage";
echo $sum;
# 6.69% critical damage
?>
第二:正则表达式方法。
<?php
# define a regex to allow digits and points directly connected
$regex = '~['d.]+~';
preg_match($regex, $desc, $num);
$sum = floatval($num[0]) * $count . "% critical damage";
echo $sum;
# 6.69% critical damage
?>
第三种可能性(可能是最好的):尝试细化您的实际需求并编辑您的问题:)
如果字符串的其余部分是动态的,使用 preg_replace_callback()
替换浮点数可能更健壮——这样你只会接触字符串中的数字。
sprintf()
对于标准化产品的格式非常方便。
代码:(演示)
$desc = "+2.23% critical damage";
$count = 3;
var_export(
preg_replace_callback(
'~^[+-]'d+(?:'.'d+)?~',
function($m) use ($count) {
return sprintf('%+.2f', $m[0] * $count);
},
$desc,
1
)
);
输出:
'+6.69% critical damage'