<?php


$input = '10.5+1.5/5*10=';
//Регулярка для поиска в $input числа, которые разделены математическими знаками
$regexpSearchNumbers = '/[+]|-|[*]|\\/|=/';
//Создаем массив с числами
$numbers = preg_split($regexpSearchNumbers, $input, 0, PREG_SPLIT_NO_EMPTY);
//Регулярка для поиска математических знаков, которые разделены цифрами
$regexpSearchMathOperators = '/[0-9]+[.]*[0-9]*/';
//Создаем массив с математическими операторами. Помним, что по условиям регулярки, 0-й элемент будет пустым, если
//первое число положительное, и будет содержать '-', если первое число отрицательное
$mathOperators = preg_split($regexpSearchMathOperators, $input);
//Преобразуем элементы массива $numbers в float
foreach ($numbers as &$n) {
    $n = floatval($n);
}
//Проверяем, положительное или отрицательное первое число
if ($mathOperators[0] == "-") {
    $result = $numbers[0] * (-1);
} else $result = $numbers[0];

//Последовательно разбираем математические действия
for ($i = 0; $i <= count($mathOperators); $i++) {
    if ($mathOperators[$i + 1] == '+') {
        $result = $result + $numbers[$i + 1];
    } elseif ($mathOperators[$i + 1] == '-') {
        $result = $result - $numbers[$i + 1];
    } elseif ($mathOperators[$i + 1] == '*') {
        $result = $result * $numbers[$i + 1];
    } elseif ($mathOperators[$i + 1] == '/') {
        $result = $result / $numbers[$i + 1];
    } elseif ($mathOperators[$i + 1] == '=') {
        break;
    }
}
var_dump($result);