Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/12/2013, 11:11
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 9 meses
Puntos: 320
Respuesta: Calculadora muy básica

y para finalizar, un ejemplo que hace lo que tu quieres sacado del manual de la funcion eval:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $test = '2+3*pi';
  4.  
  5. // Remove whitespaces
  6. $test = preg_replace('/\s+/', '', $test);
  7.  
  8. $number = '(?:\d+(?:[,.]\d+)?|pi|π)'; // What is a number
  9. $functions = '(?:sinh?|cosh?|tanh?|abs|acosh?|asinh?|atanh?|exp|log10|deg2rad|rad2deg|sqrt|ceil|floor|round)'; // Allowed PHP functions
  10. $operators = '[+\/*\^%-]'; // Allowed math operators
  11. $regexp = '/^(('.$number.'|'.$functions.'\s*\((?1)+\)|\((?1)+\))(?:'.$operators.'(?2))?)+$/'; // Final regexp, heavily using recursive patterns
  12.  
  13. if (preg_match($regexp, $q))
  14. {
  15.     $test = preg_replace('!pi|π!', 'pi()', $test); // Replace pi with pi function
  16.     eval('$result = '.$test.';');
  17. }
  18. else
  19. {
  20.     $result = false;
  21. }
  22.  
  23. ?>
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios