Merhabalar, geometri ödevimi “programlama ile hesap makinesi” olarak seçtim. İnternette örnekleri incelediğim de istediğim tarzda yapılmışını bulamadım. Tek bir input içine yazılan veriler ile işlem yapmak istedim. Sonuçta PHP nin zaten matematik işlemleri için bir esnekliği var bir de neden biz çarpma, toplama, çıkarma.. şeklinde seçip işlem yaptıralım ?

Bu yüzden tek bir input a değerleri girdim. Fakat PHP ifadeyi string olarak aldıladı. Bunu eval(); fonksiyonu ile çözdüm. Ben bunu Ajax kullanarak tamamlayacağım. Siz istediğiniz gibi kullanırsınız.

error_reporting(0);

// Hatalar Gizlensin.

$x = $_POST['islem'];


function hesapla($degerler)
{
$degerler = preg_replace("/[^0-9+\-.x\/()%]/","",$degerler);
$degerler = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$degerler);
$degerler = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$degerler);
$degerler = preg_replace("/([0-9]+)(%)/",".\$1",$degerler);
$degerler = preg_replace("/x/","*",$degerler);


// preg_replace() fonksiyonu ile sadece kullanacağımız karakterlere izin verdik.

if ($degerler == "" OR $degerler == NULL)
{
$returnHata = "hata";
return $returnHata;

// Hata izin verdiğimiz karakterlerin dışında karakter olursa boş olarak gözükecek.
// Bu durumda degerler boş ise hata mesajımızı yazdırıyoruz.

}else {
eval("\$return=" . $degerler . ";" );
}

// eval(); fonksiyonu ile string ifademizin PHP kodu olarak yorumlanmasını sağladık.

if(strlen($return) > 4 ) {
$ayirma = number_format($return, 1, ',', '.');
return $ayirma;
}
else{
return $return;
}

// Girilen karakter sayısı 4 den büyükse number_format(); fonksiyonu ile ayırıp, değeri döndürüyoruz.
// Girilen karakter sayısı 4 den küçük ise return değişkenini döndürüyoruz.

}
Echo hesapla($x);

// Sonuç



DEMO

KAYNAK