Yazı İçinde Matematiksel İşlem Hesaplama Sınıfı

Bu metin içinde geçen (3+(5*2)) nin 13 olduğunu bulan bir sınıftır.

<?php
class Matematiklestir{
	function degistir($metin){
		$Mat = preg_match_all("/\(+[0-9+\s+\-.*\/()%]+\)/", $metin, $mMat);
		for ($i=0;$i<$Mat; $i++){
			$formul = str_replace(" ", "", $mMat[0][$i]);
			$formul = preg_replace("/([+-])([0-9]+)(%)/", "*(1\$1.\$2)", $formul);
			$formul = preg_replace("/([0-9]+)(%)/",".\$1",$formul);
			eval("\$sonuc=" . $formul . ";");
			$poz = strpos($metin, $mMat[0][$i]);
			$metin = substr_replace($metin, $sonuc, $poz, strlen($mMat[0][$i]));
		}
		return $metin;
	}
}
$yuzde = 10;
$zincir = " [[40+15]*2] + $yuzde% u (((40+15)*2)+ $yuzde%) eder";
$ciktilar = new Matematiklestir;
$cikti = $ciktilar->degistir($zincir);
echo $cikti;
?>

Çıktı

[[40+15]*2] + 10% u 121 eder