Also um Operatoren und Ziffern zu trennen nutzt man dann doch besser reguläre Ausdrücke:
PHP
$string = "3 + 5+27*8 - 12 +9 / 110";
preg_match_all("#[[:digit:]]{1,99}#", $string, $num);
preg_match_all("#[\+\-\*\-]#", $string, $op);
print_r($num);
print_r($op);
Alles anzeigen
Weniger Code, geht schneller, funktioniert überhaupt erst UND Elemente mit dem gleichen Index gehören zusammen:
Das Rechenzeichen $op[0][1] gehört hinter die Zahl $num[0][1].
Wenn wir nun noch auf Klammern prüfen und diese vorher ausrechnen klappt das schon wunderbar.