3 回答
TA贡献1777条经验 获得超10个赞
您可以使用preg_match
将输入拆分为数字和乘数,并将数字乘以1000
乘数字符串的长度:
$inp= "12.345kk";
$number = 0;
if (preg_match('/^([\d.]+)([kt]+)/', $inp, $matches)) {
$number = $matches[1];
$multipliers = $matches[2];
$number *= 1000 ** strlen($multipliers);
}
echo $number;
输出:
12345000
TA贡献1830条经验 获得超3个赞
如果您确定数字的格式,您可以计算k字符串中的字符数,然后将其转换为数字并乘以适当的幂。
$inp= "12.345kk";
$count = substr_count($inp,'k');
$number = (double)$inp*1000**$count;
print($number);
TA贡献1865条经验 获得超7个赞
您的担心是有道理的,eval()
除非您绝对必须这样做,否则您永远不应该通过 运行用户输入。你不必在这里这样做。让我向您展示一种可能的解决方案。
您可以通过将输入转换为 来float
获取输入的数字部分。k
您可以使用获取字符数substr_count()
。然后,您可以使用k
s 的数量作为该数字的指数1000
并将其与输入数字相乘来计算结果数字:
$inp = "12.345kk";
$number = (float) $inp; // 12.345
$factor = pow(1000, substr_count($inp, 'k')); // 1000^2
$result = $number * $factor; // 12345000
请注意,您也可以使用**
运算符而不是pow
. 但是,我认为pow
不熟悉 PHP 的程序员很容易理解它,因此更可取。
- 3 回答
- 0 关注
- 141 浏览
添加回答
举报