获取字符串中的数字总和?

时间:2016-03-09 18:10:46

标签: php html

我想得到字符串中数字的总和。我有以下PHP:

$desc = "+2.23% critical damage";
$count = 3;`

现在我想在新字符串中使用$count*$desc的值,如下所示:

$sum = "+6.69% critical damage";

我该如何管理?如何将此字符串中的数字乘以$count

2 个答案:

答案 0 :(得分:0)

三种可能性。

丑陋,但工作(在字符串上使用<?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
?>

第二:正则表达式方法。

jmp

第三种可能性(可能是最好的):尝试优化您的实际要求并编辑您的问题:)

答案 1 :(得分:0)

如果您的字符串的其余部分是动态的,使用 preg_replace_callback() 替换浮点数可能会更可靠——这样您只需接触字符串中的数字。

sprintf() 对于标准化产品格式非常方便。

代码:(Demo)

$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'