php实现计算器程序
基础计算器实现
使用PHP创建一个基础计算器,支持加减乘除运算。通过HTML表单接收用户输入,PHP处理计算逻辑。
<!DOCTYPE html>
<html>
<head>
<title>PHP计算器</title>
</head>
<body>
<form method="post">
<input type="number" name="num1" required>
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">×</option>
<option value="divide">÷</option>
</select>
<input type="number" name="num2" required>
<button type="submit">计算</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$operator = $_POST["operator"];
$result = 0;
switch ($operator) {
case "add":
$result = $num1 + $num2;
break;
case "subtract":
$result = $num1 - $num2;
break;
case "multiply":
$result = $num1 * $num2;
break;
case "divide":
$result = ($num2 != 0) ? $num1 / $num2 : "除数不能为零";
break;
}
echo "<p>结果: $result</p>";
}
?>
</body>
</html>
科学计算器扩展
在基础计算器上增加科学计算功能,如幂运算、平方根、三角函数等。
// 在原有表单中添加科学计算选项
<select name="scientific">
<option value="">--选择科学运算--</option>
<option value="power">幂(x^y)</option>
<option value="sqrt">平方根</option>
<option value="sin">正弦</option>
<option value="cos">余弦</option>
</select>
// 在PHP处理部分添加
if (isset($_POST["scientific"]) && !empty($_POST["scientific"])) {
$func = $_POST["scientific"];
switch ($func) {
case "power":
$result = pow($num1, $num2);
break;
case "sqrt":
$result = sqrt($num1);
break;
case "sin":
$result = sin(deg2rad($num1));
break;
case "cos":
$result = cos(deg2rad($num1));
break;
}
}
表达式解析计算器
实现能解析数学表达式的计算器,处理如"3+5*2"这样的复合表达式。
function evaluateExpression($expression) {
// 移除所有空格
$expression = str_replace(' ', '', $expression);
// 使用PHP的eval函数(注意安全风险,生产环境需替换为解析器)
try {
eval('$result = '.$expression.';');
return $result;
} catch (Throwable $e) {
return "表达式错误";
}
}
// 更安全的替代方案(使用数学表达式解析库)
// 需要安装https://github.com/mossadal/math-parser
/*
use MathParser\StdMathParser;
use MathParser\Interpreting\Evaluator;
$parser = new StdMathParser();
$AST = $parser->parse("3+5*2");
$evaluator = new Evaluator();
$value = $AST->accept($evaluator);
*/
计算器安全增强
为防止代码注入,对用户输入进行严格过滤和验证。
// 过滤非数字字符
function sanitizeInput($input) {
return preg_replace('/[^0-9\.\+\-\*\/]/', '', $input);
}
// 验证数字
function isValidNumber($num) {
return is_numeric($num);
}
// 使用时的修改
$num1 = isValidNumber($_POST["num1"]) ? $_POST["num1"] : 0;
$expression = isset($_POST["expression"]) ? sanitizeInput($_POST["expression"]) : "";
计算器样式美化
使用CSS美化计算器界面,创建更专业的视觉效果。
<style>
.calculator {
width: 300px;
margin: 50px auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
input, select {
padding: 8px;
margin: 5px 0;
width: 100%;
box-sizing: border-box;
}
button {
background: #4CAF50;
color: white;
padding: 10px;
border: none;
width: 100%;
cursor: pointer;
}
.result {
margin-top: 15px;
padding: 10px;
background: #f9f9f9;
border-radius: 5px;
}
</style>
<div class="calculator">
<!-- 之前表单内容 -->
<div class="result">
<?php if (isset($result)) echo "结果: $result"; ?>
</div>
</div>






