<?php

error_reporting(-1);

$input = '125.34+100*3/2=';

$number = 0;
$result = 0;
$op = '';

// Находит числа любой длины, в том числе дроби или знаки арифметических операций
if (preg_match_all('/\d+\.?\d*|[\+\-\*\/\=]/', $input, $numbersAndOperations)) {

	foreach ($numbersAndOperations[0] as $chars) {

		if ($chars == '-' or $chars == '+' or $chars == '*' or $chars == '/' or $chars == '=') {

			$op = $chars;
			if (!$result) {
				$result = $number;
			}
			$number = 0;

		} else {

			// Определяет переменную с десятичной дробью и задает ей тип double, остальным integer
			$number = (preg_match('/\d+\.\d+/', $chars)) ? floatval($chars) : intval($chars);

			switch ($op) {
				case '-':
					$result -= $number;
					break;
				case '+':
					$result += $number;
					break;
				case '*':
					$result *= $number;
					break;
				case '/':
					$result /= $number;
					break;
			}

		}

		if ($op == '=') {
			echo round($result, 2);
			exit();
		}

	}

}

echo "Что-то пошло не так... Выражение пустое или с опечаткой, попробуйте снова.";