ホームページ >バックエンド開発 >PHPチュートリアル >PHP で文字列から数式を安全に評価するにはどうすればよいですか?
Eval を使用した文字列からの数学式の評価
問題:
eval() を使用して文字列に格納された数式、「解析」
解決策:
セキュリティ上の懸念から、この目的で eval() を使用することは一般的に推奨されませんが、次のコード変更により問題が解決されます:
$ma = "2+10"; $p = eval('return ' . $ma . ';'); print $p;
eval() 関数内で結果を明示的に返すことにより、コードは完全な結果を期待します。コード行。
代替解決策:
より安全で効率的な解決策は、トークナイザー/パーサーを使用して数式を処理することです。これは簡単な正規表現ベースの例です:
$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; }
以上がPHP で文字列から数式を安全に評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。