ДоХтор, бредовато, но работает
быдло (+/-)
<?php
function parser($str) {
preg_match('#(.*)(\+|\-|\*|\/)(.*)#', $str, $matches);
return array($matches[1], $matches[3], str_replace(array('+', '-', '*', '/'), array('plus', 'minus', 'multi', 'divide'), $matches[2]));
}
function proc($args) {
return $args[2]($args[0], $args[1]);
}
function plus($a, $b) {
return $a + $b;
}
function minus($a, $b) {
return $a - $b;
}
function multi($a, $b) {
return $a * $b;
}
function divide($a, $b) {
return $b > 0 ? ($a / $b) : 'division by zero';
}
$args = parser('1 + 3');
echo proc($args);