2010-02-06 10 views
5

BenBir metin değişkeninin matematik toplamı mı? (Örn 5865/100)

$whatever = "5865/100";

Bu bir metin değişkendir ... olan bir değişken var.

5865/100 hesaplamasını istiyorum, böylece diğer sayılara ekleyebilir ve bir hesaplama yapabilirim.

Number_format, "5.865" değerini döndürdüğü gibi çalışmıyor. Ben 58.65

yapabileceğim ...

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

dönmek istiyorum Ama oldukça dağınık görünüyor oysa. Daha basit bir yolu var mı?

+2

texxxt variable ?? Şimdi dizeleri tutan değişkenler mi diyoruz? phpunky nasıl – Gordon

cevap

7

PHP ifadesi olarak değerlendirin aşağıdaki, ancak ilk denetimi yapmak ve hataları bastırmak olabilir.

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

Unutmayın; Değerlendirmeden sonra ve içinde. – lamas

+1

Sadece rakamlardan ve matematiksel operatörlerden oluşan tehlikeli kodları kimin yazabileceğini görmek için bir kod yarışması yapalım. Mümkün mü? – Kibbee

+0

$ çiftli (") dizginin içinde $ sonucu kullanarak, PHP'nin ifadeyi değerlendirmeden önce $ sonuç değişkenini denemesine ve değiştirmesine neden olur. – Kibbee

2

Bir dizeyi kod olarak değerlendirmek için eval işlevini kullanabilirsiniz. Ancak, bu kodun nereden geldiği konusunda dikkatli olmalısınız, çünkü sadece basit matematik için değil, kendisine aktarılan herhangi bir şeyi yürütür. Eğer dize matematiksel formülü içeriyordu bilseydim, bunu sadece rakam ve operatörler ve uzay içeriyorsa

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

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

Bu, eklemeyi unuttuğunuzda her zaman bir sözdizimi hatası oluşturacaktır; – lamas

+0

değerlendiren dize ne olursa olsun teşekkürler, kodumu güncellendi. – Kibbee