今回初めてteratailを使用します。何かおかしなところがありましたら指摘してください。タイトルでも書きましたが、javascriptではなくphpで電卓を作りたいのです。そこで、四則演算と、同じ画面で計算結果を出力することができたのですが、半角数字制限がどうしてもうまくいきません。google先生に伺ったところ
if (preg_match("/^[0-9]+$/", $num))
というコードが出てきたのですが、どこにどう利用してもうまくいきません。他にも色々試してみたのですが結果は同じです。最終的には半角数字以外で書かれたら、その下に吹き出しでエラーを出したいと思って
<?php $num = isset($_GET['num']) ? $_GET['num'] : null; $operator = isset($_GET['operator']) ? $_GET['operator'] : '+'; $num1 = isset($_GET['num1']) ? $_GET['num1'] : null; if (!is_null($num) && !is_null($num1)) { switch ($operator) { case '-': $answer = $num - $num1; break; case '*': $answer = $num * $num1; break; case '/': $answer = $num / $num1; break; case '+': default: $answer = $num + $num1; break; } $result = "{$num} {$operator} {$num1} = {$answer}"; } else { $result = '計算されていません。'; } ?> <!DOCTYPE html> <html lang = "ja"> <head> <meta charset = "utf-8"> <title>電卓を作ろう</title> <link rel="stylesheet" href="dentaku.css"> </head> <body> <form action="" method="get"> <h1>計算してみよう!</h1> <p><input name="num" style="width:110px;height:15px;" style="ime_mode:disabled" value="<?php echo $num; ?>" placeholder="半角数字のみ" required autofocus></p> <select name="operator"> <option value="+" <?php if ($operator === '+') { echo 'selected'; } ?>>+</option> <option value="-" <?php if ($operator === '-') { echo 'selected'; } ?>>-</option> <option value="*" <?php if ($operator === '*') { echo 'selected'; } ?>>*</option> <option value="/" <?php if ($operator === '/') { echo 'selected'; } ?>>/</option> </select> <p><input name="num1" style="width:110px;height:15px" name="num1" style="ime_mode:disabled" value="<?php echo $num1; ?>" placeholder="半角数字のみ" required></p> <input type="submit" id="btn" value="計算する"> <input type="button" onclick="location.href='http://localhost:8888/dentaku.php'" value="リセット"> </form> <p><?php echo $result; ?></p> </body> </html>
コードはこんな感じで書きました。調べて書いたのと自分で書いたのとで読みにくいとは思いますが、if (preg_match("/^[0-9]+$/", $num))はどこに書くのが正しいのでしょうか?そもそもが間違っているよというようなところなどありましたらご指摘ください。宜しくお願いします。
試したこと
このコードを書けばいいよという記事がありいろんなところにほりこんでみましたが、計算結果に+ = 0とでたり、そもそも何も変わらなかったりで、どこに書けばいいのかわからなくてここ3日間悩んでます。
補足情報
マシンはmac yosemiteです。
環境はgoogle chromeで、テキストエディタはATOMです。
あとMAMPも使っています。
回答2件
あなたの回答
tips
プレビュー