2014-12-24 2 views
0

Я хотел, чтобы математическая операция выполнялась непосредственно из значения столбца формы. Есть ли функция для этого? Я попробовал это, но это просто эхо находится вне значения входного сигнала, как это:Математическая операция непосредственно из значения формы

<form action="" method="post"> 
<input type="text" name="equation" value="2+(3+4)"> 
<input type="submit" value="Calculate"> 
</form> 

<?php 
if(isset($_POST['equation'])){ 
    $equation = htmlspecialchars($_POST['equation']); 
echo $equation; 
} 
?> 

Как вы видите, я хотел бы получить выход 2+ (3 + 4) в то время как эхо $ уравнения.

+0

Зачем вам это делать? –

+0

Вы должны создать свою собственную функцию. Если вы хотите сделать прямую математику, постройте ее на своем PHP или получите пользовательский ввод, затем назначьте ее переменным и выполните математику оттуда. –

+0

Возможный дубликат [вычисление математического выражения из строки с использованием eval] (http://stackoverflow.com/questions/18880772/calculate-math-expression-from-a-string-using-eval) – nitigyan

ответ

1

попробовать это

$equation = preg_replace('[^0-9\+-\*\/\(\) ]', '', $_POST['equation']); 
if(!empty($equation)){ 
    eval('$total = (' . $equation . ');'); 
    echo $total; 
} 

Вы должны заботиться о безопасности или использовать preg_replace и/или поставить некоторые условия.

+1

Это очень небезопасно !!! От почты до eval, пожалуйста, удалите этот ответ – pltvs

+1

Рам, вы потрясающий брат. Спасибо :) Я позабочусь о безопасности. Но большое спасибо за метод .. потрясающий .. – user2672112

1

Обычно люди используют eval для этой цели, но лучше не использовать eval, это не хорошая оценка, это большая дыра в безопасности.

function calc($str) 
{ 
    $str = preg_replace('[^0-9\+-\*\/\(\) ]', '', $str); 

    $compute = create_function('', 'return (' . $str . ');'); 
    return 0 + $compute(); 
} 

echo calc($_POST['equation']); 
+2

C'mon, @ plutov.by, небольшое объяснение не повредит! ;) –

Смежные вопросы