<?php
function calculate($expression) {
$numArr = preg_split('#(\\+|\\*|-|/|%)#', $expression, -1, PREG_SPLIT_DELIM_CAPTURE
);
for($i = 0; count($numArr) > 1; $i++) { switch ($numArr[$i]) {
case '/':
$numArr[$i] = $numArr[$i - 1] / $numArr[$i + 1];
$i = 0;
break;
case '*':
$numArr[$i] = $numArr[$i - 1] * $numArr[$i + 1];
$i = 0;
break;
case '%':
$numArr[$i] = $numArr[$i - 1] % $numArr[$i + 1];
$i = 0;
break;
default:
break;
}
}
for($i = 0; count($numArr) > 1; $i++) { switch ($numArr[$i]) {
case '+':
$numArr[$i] = $numArr[$i - 1] + $numArr[$i + 1];
$i = 0;
break;
case '-':
$numArr[$i] = $numArr[$i - 1] - $numArr[$i + 1];
$i = 0;
break;
default:
break;
}
if(count($numArr) == 1) { break;
}
}
return $numArr[0];
}
echo calculate("200+100/100-2011");
PD9waHAKCmZ1bmN0aW9uIGNhbGN1bGF0ZSgkZXhwcmVzc2lvbikgewogICAgJG51bUFyciA9IHByZWdfc3BsaXQoJyMoXFwrfFxcKnwtfC98JSkjJywgJGV4cHJlc3Npb24sIC0xLCBQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOwoKICAgICAgICBmb3IoJGkgPSAwOyBjb3VudCgkbnVtQXJyKSA+IDE7ICRpKyspIHsKICAgICAgICAgICAgc3dpdGNoICgkbnVtQXJyWyRpXSkgewogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgJG51bUFyclskaV0gPSAkbnVtQXJyWyRpIC0gMV0gLyAkbnVtQXJyWyRpICsgMV07CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJG51bUFyclskaSArIDFdKTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkbnVtQXJyWyRpIC0gMV0pOwogICAgICAgICAgICAgICAgICAgICRudW1BcnIgPSBhcnJheV92YWx1ZXMoJG51bUFycik7CiAgICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjYXNlICcqJzoKICAgICAgICAgICAgICAgICAgICAkbnVtQXJyWyRpXSA9ICRudW1BcnJbJGkgLSAxXSAqICRudW1BcnJbJGkgKyAxXTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkbnVtQXJyWyRpICsgMV0pOwogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRudW1BcnJbJGkgLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgJG51bUFyciA9IGFycmF5X3ZhbHVlcygkbnVtQXJyKTsKICAgICAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhc2UgJyUnOgogICAgICAgICAgICAgICAgICAgICRudW1BcnJbJGldID0gJG51bUFyclskaSAtIDFdICUgJG51bUFyclskaSArIDFdOwogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRudW1BcnJbJGkgKyAxXSk7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJG51bUFyclskaSAtIDFdKTsKICAgICAgICAgICAgICAgICAgICAkbnVtQXJyID0gYXJyYXlfdmFsdWVzKCRudW1BcnIpOwogICAgICAgICAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgaWYoIShwcmVnX21hdGNoKCcjKFxcKnwvfCUpIycsIGltcGxvZGUoIiIsICRudW1BcnIpKSkpIGJyZWFrOyAgICAKICAgICAgICB9CgogICAgICAgIGZvcigkaSA9IDA7IGNvdW50KCRudW1BcnIpID4gMTsgJGkrKykgewogICAgICAgICAgICBzd2l0Y2ggKCRudW1BcnJbJGldKSB7CiAgICAgICAgICAgICAgICBjYXNlICcrJzoKICAgICAgICAgICAgICAgICAgICAkbnVtQXJyWyRpXSA9ICRudW1BcnJbJGkgLSAxXSArICRudW1BcnJbJGkgKyAxXTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkbnVtQXJyWyRpICsgMV0pOwogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRudW1BcnJbJGkgLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgJG51bUFyciA9IGFycmF5X3ZhbHVlcygkbnVtQXJyKTsKICAgICAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgICAgICAgICRudW1BcnJbJGldID0gJG51bUFyclskaSAtIDFdIC0gJG51bUFyclskaSArIDFdOwogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRudW1BcnJbJGkgKyAxXSk7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJG51bUFyclskaSAtIDFdKTsKICAgICAgICAgICAgICAgICAgICAkbnVtQXJyID0gYXJyYXlfdmFsdWVzKCRudW1BcnIpOwogICAgICAgICAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSAgICAKCiAgICAgICAgICAgIGlmKGNvdW50KCRudW1BcnIpID09IDEpIHsKICAgICAgICAgICAgJG51bUFyciA9IGFycmF5X3ZhbHVlcygkbnVtQXJyKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRudW1BcnJbMF07Cn0KCmVjaG8gY2FsY3VsYXRlKCIyMDArMTAwLzEwMC0yMDExIik7