fork download
  1. <?php
  2.  
  3. $example = '4*10+3-50+22/2='; //то, что будем считать
  4. $number = 0; //цифра, которую будем формировать
  5. $char = 'none'; //знак, который мы вытащили сейчас
  6. $op = 'none'; //знак, который был в прошлый раз
  7. $result = 0;
  8.  
  9. for ($i=0; ; $i++) {
  10.  
  11. $getSingleOne = substr($example, $i, 1); //вынимаем по очереди каждый элемент из строки
  12.  
  13. if (is_numeric($getSingleOne)) {
  14. $number = ($number * 10) + intval($getSingleOne);
  15. } else {
  16. $char = $getSingleOne;
  17.  
  18. if (preg_match('/=/', $op) == TRUE) {
  19. break;
  20. } elseif (preg_match('/[+]/', $op) == TRUE || preg_match('/none/', $op) == TRUE) {
  21. $result += $number;
  22. } elseif (preg_match('/-/', $op) == TRUE) {
  23. $result -= $number;
  24. } elseif (preg_match('/\//', $op) == TRUE) {
  25. $result /= $number;
  26. } elseif (preg_match('/[*]/', $op) == TRUE) {
  27. $result *= $number;
  28. }
  29.  
  30. $number = 0;
  31. $op = $char;
  32. }
  33. }
  34.  
  35. echo "{$example} {$result}";
  36. ?>
Success #stdin #stdout 0.02s 24584KB
stdin
Standard input is empty
stdout
4*10+3-50+22/2= 7.5