בפתרון זה נלמד כיצד לחשב ביטויים מתמטיים ממחרוזת.
אל תשתמש ב-eval כי eval מצפה לשורות קוד שלמות, לא רק לפרגמנטים.
פתרון 1.
$ma = "2+10";
if(preg_match('/(\d+)(?:\s*)([\+\-\*\/])(?:\s*)(\d+)/', $ma, $matches) !== FALSE){
$operator = $matches[2];
switch($operator){
case '+':
$p = $matches[1] + $matches[3];
break;
case '-':
$p = $matches[1] - $matches[3];
break;
case '*':
$p = $matches[1] * $matches[3];
break;
case '/':
$p = $matches[1] / $matches[3];
break;
}
echo $p;
}