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
21 lines
<?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;
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktı

Markdown
1 lines
[[40+15]*2] + 10% u 121 eder
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX