In Depth PHP Calculator

Status
Not open for further replies.

drexxo

Solid State Member
Messages
6
Location
United States
For a little more advanced script kiddie, who is looking for something to tool around with.

Code:
<?php
  function calc($a) {
    $functions="/(\+|\-|\*|\/|\^|\%)/";
    $num=explode(chr(124),preg_replace($functions,"|",$a));
    $a=str_split($a);$d=0;
    foreach ($a as $b => $c) {
      if (preg_match($functions,$c)) {
        $sign[$d]=$c;$d++;
      }
    }$d=0;
    while ($d<=count($num)) {
      $num1=iif($num3,$num3,rep($num[$d]));
      $num2=rep($num[$d+1]);
      $sign1=$sign[iif($num3,$d,0)];
      $d++;
      if (preg_match("/./",$sign1)) {
        switch ($sign1) {
          case "+":
            $num3=$num1+$num2;
            break;
          case "-":
            $num3=$num1-$num2;
            break;
          case "*":
            $num3=$num1*$num2;
            break;
          case "/":
            $num3=$num1/$num2;
            break;
          case "^":
            $x=$num2;$num3=1;
            while ($x) {
              $num3*=$num1;$x--;
            }
            break;
          case "%":
            $num3=$num1%$num2;
            break;
        }
      }else return $num3;
    }return $num3;
  }
  function iif($if,$T,$F) {
    if ($if) return $T;
    else return $F;
  }
  function rep($num) {
    if (preg_match("/.*\.(.*)/",$num,$len)&&preg_match("/[a-z]/i",$num)) {
      $len=strlen(preg_replace("/\D/","",$len[1])).chr(10);
      $k=str_repeat(0,3-$len);$m=str_repeat(0,6-$len);$b=str_repeat(0,9-$len);
      $num=str_replace("k",$k,str_replace("m",$m,str_replace("b",$b,str_replace(".","",$num))));
    }elseif (preg_match("/.*\.(.*)/",$num,$len)&&!preg_match("/[a-z]/i",$num))
      $num=$num;
    else
      $num=str_replace("k","000",str_replace("m","000000",str_replace("b","000000000",$num)));
    return $num;
  }
?>
 
Status
Not open for further replies.
Back
Top Bottom