-2

約100個のテキストボックスを含むhtmlフォーム(ショップの領収書フォーム)があり、ユーザーはフロート値または"20.2*33.4"の形式のものを入力することになっています。フォームは php ページに送信されます。すべてのテキスト ボックスに同じパターンが含まれていることを確認してから、テキスト内の乗算を評価したいと考えています。

文字列が "float*float" の形式であるかどうかを確認する方法を知りたいですか?

助けてください。ありがとうございました

4

2 に答える 2

1

正規表現を使用して形式を確認し、数値と演算子を解析してから計算を行うことができます。

$total = 0;
$string = '20.2*33.4';
if(preg_match('/^(\d*\.?\d+)(?:\*)(\d*\.?\d+)$/', $string, $matches) === 1){
    $total = floatval($matches[1]) * floatval($matches[2]);
}

デモ: http://ideone.com/azhMag

于 2013-01-28T20:15:53.020 に答える
-2

これは不可能です。使用できる関数はevalだけですが、フォームでそのように使用するのは非常に危険です。

式を評価する場合は、独自の言語を作成する必要があります(パーサー、レクサーなどを使用)。

だからそれは不可能です。あなたはここで見ることができますhttp://en.wikipedia.org/wiki/Shunting-yard_algorithm

編集:それが常に2つの部分を持つ単純な乗算である場合は、上記のコメントのようにそれを分解することができます。

于 2013-01-28T19:42:35.767 に答える