約100個のテキストボックスを含むhtmlフォーム(ショップの領収書フォーム)があり、ユーザーはフロート値または"20.2*33.4"の形式のものを入力することになっています。フォームは php ページに送信されます。すべてのテキスト ボックスに同じパターンが含まれていることを確認してから、テキスト内の乗算を評価したいと考えています。
文字列が "float*float" の形式であるかどうかを確認する方法を知りたいですか?
助けてください。ありがとうございました
約100個のテキストボックスを含むhtmlフォーム(ショップの領収書フォーム)があり、ユーザーはフロート値または"20.2*33.4"の形式のものを入力することになっています。フォームは php ページに送信されます。すべてのテキスト ボックスに同じパターンが含まれていることを確認してから、テキスト内の乗算を評価したいと考えています。
文字列が "float*float" の形式であるかどうかを確認する方法を知りたいですか?
助けてください。ありがとうございました
正規表現を使用して形式を確認し、数値と演算子を解析してから計算を行うことができます。
$total = 0;
$string = '20.2*33.4';
if(preg_match('/^(\d*\.?\d+)(?:\*)(\d*\.?\d+)$/', $string, $matches) === 1){
$total = floatval($matches[1]) * floatval($matches[2]);
}
これは不可能です。使用できる関数はevalだけですが、フォームでそのように使用するのは非常に危険です。
式を評価する場合は、独自の言語を作成する必要があります(パーサー、レクサーなどを使用)。
だからそれは不可能です。あなたはここで見ることができますhttp://en.wikipedia.org/wiki/Shunting-yard_algorithm
編集:それが常に2つの部分を持つ単純な乗算である場合は、上記のコメントのようにそれを分解することができます。