Я не думаю, что такая функция существует - по крайней мере, не в комплекте с PHP.
Написание функции, выполняющей эту операцию, если ваша строка всегда имеет одинаковый формат, не должно быть слишком сложным;например, я бы сказал, что что-то вроде этого должно сработать:
$str = '18 5/16';
var_dump(calc($str));
function calc($str) {
$int = 0;
$float = 0;
$parts = explode(' ', $str);
if (count($parts) >= 1) {
$int = $parts[0];
}
if (count($parts) >= 2) {
$float_str = $parts[1];
list($top, $bottom) = explode('/', $float_str);
$float = $top / $bottom;
}
return $int + $float;
}
, что даст вам следующий вывод:
float 18.3125
И вы можете получить что-токороче с несколькими регулярными выражениями;что-то вроде этого должно сработать, я полагаю:
function calc($str) {
if (preg_match('#(\d+)\s+(\d+)/(\d+)#', $str, $m)) {
return $m[1] + $m[2] / $m[3];
}
return 0;
}
Иначе, не входит в PHP, но уже существует, возможно, этот класс может помочь: Eval Math .
Отказ от ответственности: я не проверял его - поэтому не совсем уверен, что он будет работать в вашей конкретной ситуации.