Foros del Web » Programando para Internet » PHP »

Obtener valor de una expresion numérica

Estas en el tema de Obtener valor de una expresion numérica en el foro de PHP en Foros del Web. Hola, gracias de antemano a todos. Llevo mucho tiempo consultado éste foro y me parece genial el que la gente participe tanto. Verán tengo una ...
  #1 (permalink)  
Antiguo 08/06/2009, 10:38
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Obtener valor de una expresion numérica

Hola, gracias de antemano a todos.

Llevo mucho tiempo consultado éste foro y me parece genial el que la gente participe tanto.

Verán tengo una duda ya que no sé como recoger el valor de una expresión que tengo guardada en base de datos.

Verán, en un formulario almaceno cadenas del estilo "5*(23+32)".

Pues bien, después quiero mostrar el resultado de esa expresión, pero no logro forma de sacar el resultado. Si hago un eval y un cast a float siempre me saca 5, en vez de sacarme el resultado total. Aqui les pongo una seccion del codigo que estoy utilizando ahora mismo, ya que con eval obtenia el mismo resultado:

Código PHP:
// En fila almaceno un array de valores de la BBDD.
$fila=$claseConexion->DevolverFila($i);

$valor_mostrar=0;
if(
ContieneFormula($fila['valor']))
          
$valor_mostrar=0;
else 
          
$valor_mostrar=$fila['valor'];
                
settype($valor_mostrar,"double");

echo 
$valor_mostrar
Gracias y un saludo!!
  #2 (permalink)  
Antiguo 08/06/2009, 11:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Obtener valor de una expresion numérica

Con eval deberia funcionar:

Código PHP:
<?php

$foo 
"5*(23+32)";
$bar = eval("return $foo;");

var_dump($bar);

?>
  #3 (permalink)  
Antiguo 08/06/2009, 11:55
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Obtener valor de una expresion numérica

Muchísimas gracias!!

Funciona a la perfección, no sabia el porqué del return, pero me he informado y va genial!

  #4 (permalink)  
Antiguo 08/06/2009, 13:00
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 11 meses
Puntos: 24
Respuesta: Obtener valor de una expresion numérica

También podés cargar la variable dentro del eval:

Código PHP:
<?php

$dato_db 
"5*(23+32)";
eval(
"\$foo = ${dato_db};");

var_dump($foo);

?>
  #5 (permalink)  
Antiguo 08/06/2009, 13:33
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Obtener valor de una expresion numérica

Por cierto, es recomendable que uses una expresión regular antes de usar el eval(), para que no hagan estragos con tu sitio (en caso de que el usuario tenga acceso a este).
  #6 (permalink)  
Antiguo 09/06/2009, 05:15
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Obtener valor de una expresion numérica

Si, es cierto. Estoy ahora mismo poniendome otra vez al dia con las expresiones regulares, ya que no debo de permitir más que ciertas operaciones.

Gracias por los consejos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:42.