Математическая сумма текстовой переменной? (Например, 5865/100)

У меня есть переменная, которая является...

$whatever = "5865/100";

Это - текстовая переменная.

Я хочу, чтобы это вычислило 5865/100, так, чтобы я мог добавить его к другим числам и сделать вычисление.

Number_format не работает, поскольку он просто возвращается "5,865". Принимая во внимание, что я хочу, чтобы это возвратилось 58.65

Я мог сделать...

$explode=explode("/",$whatever);
if(count($explode)=="2") {
    $whatever = $explode[0]/$explode[1];
}

Но это кажется довольно грязным. Существует ли более простой путь?

5
задан MatrixFrog 7 February 2010 в 05:53
поделиться

2 ответа

Оценить как выражение PHP, но сначала проверьте, содержит ли оно только цифры, операторы и пробел, и подавите любые ошибки.

if (preg_match('/^[\d\+\-\/\*\s]+$/', $s)) {
  @eval('$result = ' . $s . ';');
}
7
ответ дан 14 December 2019 в 01:07
поделиться

Вы можете использовать функцию eval , чтобы оценить строку как код. Однако вы должны быть осторожны с тем, откуда взялся этот код, потому что он будет выполнять все, что ему передано, а не только простую математику. Если бы вы знали, что ваша строка содержит математическую формулу, вы могли бы сделать следующее

$answer = 0;
$whatever = "5865/100";

eval ('$answer = ' . $whatever . ';');
print($answer);
2
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: