2010-02-06 4 views
5

tengo una variable que es ...¿Haz la suma matemática de una variable de texto? (Por ejemplo 5865/100)

$whatever = "5865/100";

Ésta es una variable de texto.

Quiero que calcule 5865/100, por lo que puedo agregarlo a otros números y hacer un cálculo.

Number_format no funciona, ya que solo devuelve "5,865". Mientras que yo quiero que vuelva 58.65

que podía hacer ...

$explode=explode("/",$whatever); 
if(count($explode)=="2") { 
    $whatever = $explode[0]/$explode[1]; 
} 

Pero parece bastante desordenado. ¿Hay alguna forma más simple?

+2

texxxt variable ?? ¿Es eso lo que llamamos variables que tienen cadenas ahora? cómo phpunky. – Gordon

Respuesta

7

se evalúan como expresión PHP, pero primero compruebe si contiene sólo dígitos y los operadores y el espacio, y suprimir cualquier error.

if (preg_match('/^[\d\+\-\/\*\s]+$/', $s)) { 
    @eval('$result = ' . $s . ';'); 
} 
+0

No te olvides de; después de eval y dentro de él también. – lamas

+1

Tengamos una competencia de código para ver quién puede escribir un código peligroso que consta de solo dígitos y operadores matemáticos. ¿Es posible? – Kibbee

+0

usando $ result dentro de una cadena de comillas dobles (") hará que PHP intente y reemplace la variable $ result antes de evaluar la expresión. – Kibbee

2

Puede usar la función eval para evaluar una cadena como código. Sin embargo, debes tener cuidado con la procedencia de este código porque ejecutará todo lo que se le haya pasado, no solo las matemáticas simples. Si supieras la cadena contenía una fórmula matemática, se puede hacer la siguiente

$answer = 0; 
$whatever = "5865/100"; 

eval ('$answer = ' . $whatever . ';'); 
print($answer); 
+0

Esto siempre creará un error de sintaxis ya que olvidó agregar un; después de $ lo que sea en la cadena que se eval'd – lamas

+0

gracias, actualicé mi código. – Kibbee

Cuestiones relacionadas