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