ホームページ > バックエンド開発 > PHPチュートリアル > PHP で文字列から数式を安全に評価するにはどうすればよいですか?

PHP で文字列から数式を安全に評価するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-27 22:44:17
オリジナル
745 人が閲覧しました

How to Safely Evaluate Mathematical Expressions from Strings in 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート