채택완료

합계구하고 싶습니다.

2016-07-17 (일) 04:24:32 7,647

wr_1에

3*3+9

이런식으로 입력되어 있습니다.

이거를 계산할 수 있나요?

$a = sum($write[wr_1]);

echo "$a";

이런식인가요??

wr_1필드의 모든 합계아니구요,,

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

eval 함수 쓰면 되는데 입력값이 숫자와 연산자인지 유효성을 검사한 후 사용하시면 된다고 하네요. 보안에 취약하다고...

$test = "(7.2*6)-20";

function matheval($equation)
{
 $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
    // fix percentage calcul when percentage value < 10
    $equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation);
    // calc percentage
    $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
    // you could use str_replace on this next line
    // if you really, really want to fine-tune this equation
    $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
    if ( $equation == "" )
    {
      $return = 0;
    }
    else
    {
      eval("\$return=" . $equation . ";" );
    }
    return $return;
}

$test1 = matheval($test);
echo $test1; 

답변에 대한 댓글 1개

2016-07-17 (일) 19:48:23
감사합니다~ 잘되네요~
위의 소스가 유효성 검사되어 보안에 무리없는 코드인가요?
2016-07-17 (일) 13:26:09

만약 php로 출력할 필요 없이 자바스크립트로 출력해도 무관하다면,

<script>

var a = <?php echo $view['wr_1']; ?>

alert(a);

</script>
이런식으로도 가능합니다.

답변에 대한 댓글 1개

2016-07-17 (일) 19:49:03
답변감사합니다~
php안에 넣으려는 것입니다.
위에 분의 것이 바로 되네요~

답변을 작성하려면 로그인이 필요합니다.