<?php

$problem = "123/14+234-34.5*2=";

$numbers = array();
$actions = array();
preg_match_all("/[0-9]{1,}[.]?[0-9]{0,}/", $problem, $numbers); // массив чисел, использующихся в примере
preg_match_all("#[+]|[-]|[*]|[/]#", $problem, $actions);        // и массив действий с ними

foreach ($numbers[0] as $value) {
    if (preg_match("/[.]/", $value) > 0) { // если число содержит точку, используется тип float
        $mixedNumbers[] = floatval($value);
    }
    else {
        $mixedNumbers[] = intval($value);
    }
}

for ($i = 0; $i < count($actions[0]); $i++) {
    if ($i == 0) {
        $result = $mixedNumbers[0];
    }
    echo "Первое число: $result" . " Действие: " . "[ " . $actions[0][$i] . " ]" . " Второе число: " . $mixedNumbers[$i+1];
    if ($actions[0][$i] == "/") {
        $result = $result / $mixedNumbers[$i+1];
    }
    elseif ($actions[0][$i] == "*") {
        $result = $result * $mixedNumbers[$i+1];
    }
    elseif ($actions[0][$i] == "+") {
        $result = $result + $mixedNumbers[$i+1];
    }
    else {
        $result = $result - $mixedNumbers[$i+1];
    }
    echo " Равно: $result\n";
}

echo "$problem" . $result;