fork download
  1. <?php
  2. function calculate($string) {
  3. $input = $string;
  4. $action = '';
  5. $result = 0;
  6. $currNumber = '';
  7.  
  8. for ($i = 0; $i < mb_strlen($input); $i++) {
  9. $char = mb_substr($input, $i, 1);
  10. if (is_numeric($char)) $currNumber .= $char;
  11. else {
  12. if ($action == '') $result = intval($currNumber);
  13. else {
  14. switch ($action) {
  15. case '+':
  16. $result += intval($currNumber);
  17. break;
  18. case '-':
  19. $result -= intval($currNumber);
  20. break;
  21. case '*':
  22. $result *= $currNumber;
  23. break;
  24. case '/':
  25. $result /= $currNumber;
  26. break;
  27. }
  28. }
  29. $action = $char;
  30. $currNumber = '';
  31. if ($action == '=') {
  32. echo nl2br("done: \n {$input}{$result}");
  33. exit();
  34. }
  35. }
  36. // TEST echo nl2br("current number $currNumber | result $result | action $action \n\n");
  37. }
  38. }
  39. calculate('100+12157097-214907/12505*21469-10=');
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
done: <br />
 100+12157097-214907/12505*21469-10=20502910.752499