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