Есть ли математическая сумма текстовой переменной? (Например, 5865/100) - PullRequest
5 голосов
/ 06 февраля 2010

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

$whatever = "5865/100";

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

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

Number_format не работает, так как он просто возвращает «5865». Принимая во внимание, что я хочу вернуть 58.65

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

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

Но это выглядит довольно грязно. Есть ли более простой способ?

Ответы [ 2 ]

7 голосов
/ 06 февраля 2010

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

if (preg_match('/^[\d\+\-\/\*\s]+$/', $s)) {
  @eval('$result = ' . $s . ';');
}
2 голосов
/ 06 февраля 2010

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

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

eval ('$answer = ' . $whatever . ';');
print($answer);
...