プロが教える店舗&オフィスのセキュリティ対策術

ください。
例えば
$x="3*4+5";
としたときに
echo $a;
が17になるようにするにはどうしたらいいのでしょうか?

A 回答 (3件)

そんな上手い命令などは有りません。


自力で作る(function)しか無いですよ。

自分で文字列を解析して数値を取り出し、演算記号を取り出し、演算の順番規則に従って計算。
    • good
    • 0

<?php


$x="3*4+5";
eval('$a=' . $x . ';');
echo $a;
    • good
    • 0
この回答へのお礼

ありがとうございます
それでできました

お礼日時:2022/08/26 19:16

案1. eval を使う


ただし、これによる危険性は十分検討したうえでお使いください
参考)
https://www.php.net/manual/ja/function.eval.php

案2. 正規表現で、演算記号が無くなるで文字列置換していく
例)
'/(\d+)([\*])(\d+)/' に一致する掛け算文字列を
$matches[1]*$matches[3] の計算結果に置き換える
参考)
https://www.php.net/manual/ja/function.preg-repl …

案3. 数式を解く検索エンジンに HTTP 送信して結果を取る
例)
https://www.google.co.jp/search?q=3*4%2B5

案4. 数式を解くライブラリを導入する
参考)
https://github.com/search?q=php+math+parser
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます

お礼日時:2022/08/26 19:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!