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 關注
- 202 瀏覽
添加回答
舉報