我目前正在使用亚马逊API,它以以下格式返回最低价格:“EUR xxx,xx”(例如“23,99欧元”)。
现在我想计算三种价格的总和,但由于价值不仅仅是数字,我不知道如何做到这一点。
我试过
$a = $ergebnis['price1'];
$b = $ergebnis['price2'];
$c = $ergebnis['price3'];
$string = "a + b + c";
$result = eval('return ' . preg_replace('/([a-zA-Z0-9])+/', '\$$1', $string) . ';');
echo $result;
但这并未导致结果。
答案 0 :(得分:1)
使用正则表达式:
$string = 'EUR 23,99';
function currencyToFloat($string) {
return (float) preg_replace("/^[A-Z]{3}\s([\d]+)[,.]([\d]+)/", "$1.$2", $string);
}
它会将三个字母的货币代码加上一个空格,然后将任意数字(欧洲或国际格式)转换为浮点值。
echo currencyToFloat($string); // EUR 23,99 --> 23.99
答案 1 :(得分:1)
您需要执行以下两个步骤:
float
删除" EUR"使用爆炸explode(" ", $price)[1]
按空格分解字符串。然后你想将逗号更改为点并转换为浮点数,这可以通过floatval()
和str_replace()
来完成。
function toFloat($price) {
return floatval(str_replace(',', '.', explode(" ", $price)[1]));
}
$a = toFloat($ergebnis['price1']);
$b = toFloat($ergebnis['price2']);
$c = toFloat($ergebnis['price3']);
$result = $a + $b + $c;
echo $result;
答案 2 :(得分:0)
替换分隔符(小数点逗号为点,千位点为逗号),您可以将它们相加:
$price1 = explode(" ", $ergebnis['price1']);
$price2 = explode(" ", $ergebnis['price2']);
$price3 = explode(" ", $ergebnis['price3']);
$a = floatval(str_replace(',', '.', str_replace('.', '', $price1[1])));
$b = floatval(str_replace(',', '.', str_replace('.', '', $price2[1])));
$c = floatval(str_replace(',', '.', str_replace('.', '', $price3[1])));
$result = $a + $b + $c;
echo $result;
答案 3 :(得分:-1)
你可以在每个23,99欧元上使用.split(“”)。
var str = "EUR 23,99";
var result = str.split(" ");
split返回一个由分隔符分隔的项目数组,在本例中为“”所以你将得到EUR作为结果[0]和23,99作为结果[1]所以你可以将所有转换成相同的货币并从字符串转换数字并将它们添加到总和
答案 4 :(得分:-2)
我猜你从API接收字符串。您可以通过简单地将它们转换为数字来计算:
$a = floatval($ergebnis['price1']);
$b = floatval($ergebnis['price2']);
$c = floatval($ergebnis['price3']);
函数floatval();
返回浮点值。