fork(1) download
  1. <?php
  2.  
  3.  
  4. $input = '2-2*4+15-0/1.5=';
  5.  
  6. $number = 0;
  7. $result = 0;
  8. $op = '';
  9.  
  10. $numbersAndOperations = array();
  11. preg_match_all('/\d+\.?\d*|[+\-*\/=]/', $input, $numbersAndOperations);
  12.  
  13. foreach ($numbersAndOperations[0] as $chars) {
  14.  
  15. if ($chars == '-' or $chars == '+' or $chars == '*' or $chars == '/' or $chars == '=') {
  16.  
  17. $op = $chars;
  18.  
  19. if (!$result) {
  20. $result = $number;
  21. }
  22.  
  23. } else {
  24.  
  25. $number = floatval($chars);
  26.  
  27. if ($op) {
  28.  
  29. switch ($op) {
  30. case '-':
  31. $result -= $number;
  32. break;
  33. case '+':
  34. $result += $number;
  35. break;
  36. case '*':
  37. $result *= $number;
  38. break;
  39. case '/':
  40. $result /= $number;
  41. break;
  42. }
  43.  
  44. $number = 0;
  45. }
  46.  
  47. }
  48.  
  49. if ($op == '=') {
  50. echo round($result, 2);
  51. exit();
  52. }
  53.  
  54. }
Success #stdin #stdout 0.02s 24040KB
stdin
Standard input is empty
stdout
10