이런식으로도 가능합니다.","author":{"@type":"Person","name":"그림자밟기"},"dateCreated":"2016-07-17T13:26:09+09:00"}],"acceptedAnswer":{"@type":"Answer","text":"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...","author":{"@type":"Person","name":"인텔리전트웹"},"dateCreated":"2016-07-17T09:07:34+09:00"}}}
채택완료

합계구하고 싶습니다.

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개

감사합니다~ 잘되네요~
위의 소스가 유효성 검사되어 보안에 무리없는 코드인가요?

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

<script>

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

alert(a);

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

답변에 대한 댓글 1개

답변감사합니다~
php안에 넣으려는 것입니다.
위에 분의 것이 바로 되네요~

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