当前位置:首页 > PHP

php实现计算器程序

2026-01-29 07:08:35PHP

实现基础计算器功能

使用PHP创建一个简单的计算器程序,可以处理基本的加减乘除运算。以下是一个基于表单提交的实现方式:

<?php
$result = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $num1 = $_POST['num1'];
    $num2 = $_POST['num2'];
    $operator = $_POST['operator'];

    switch ($operator) {
        case '+':
            $result = $num1 + $num2;
            break;
        case '-':
            $result = $num1 - $num2;
            break;
        case '*':
            $result = $num1 * $num2;
            break;
        case '/':
            $result = ($num2 != 0) ? $num1 / $num2 : "除数不能为零";
            break;
    }
}
?>

<form method="post" action="">
    <input type="number" name="num1" required>
    <select name="operator">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="number" name="num2" required>
    <button type="submit">计算</button>
</form>

<?php if ($result !== ''): ?>
    <p>结果: <?php echo $result; ?></p>
<?php endif; ?>

增强版计算器功能

扩展计算器功能,支持更复杂的表达式计算和错误处理:

<?php
$result = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        $expression = $_POST['expression'];
        // 移除所有空格
        $expression = str_replace(' ', '', $expression);

        // 安全验证
        if (!preg_match('/^[0-9+\-*\/.()]+$/', $expression)) {
            throw new Exception("表达式包含非法字符");
        }

        // 使用eval计算表达式(生产环境应考虑更安全的方式)
        $result = eval("return $expression;");
    } catch (DivisionByZeroError $e) {
        $result = "除数不能为零";
    } catch (Exception $e) {
        $result = "计算错误: " . $e->getMessage();
    }
}
?>

<form method="post" action="">
    <input type="text" name="expression" placeholder="输入表达式,如:2*(3+4)" required>
    <button type="submit">计算</button>
</form>

<?php if ($result !== ''): ?>
    <p>结果: <?php echo $result; ?></p>
<?php endif; ?>

使用数学表达式解析库

对于更复杂的计算需求,可以使用专门的数学表达式解析库,如math-parser

require_once 'vendor/autoload.php';
use MathParser\StdMathParser;
use MathParser\Interpreting\Evaluator;

$parser = new StdMathParser();
$evaluator = new Evaluator();

$result = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        $expression = $_POST['expression'];
        $AST = $parser->parse($expression);
        $result = $AST->accept($evaluator);
    } catch (Exception $e) {
        $result = "计算错误: " . $e->getMessage();
    }
}

实现科学计算器功能

扩展计算器功能,支持科学计算函数:

<?php
$result = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $function = $_POST['function'];
    $number = $_POST['number'];

    switch ($function) {
        case 'sqrt':
            $result = sqrt($number);
            break;
        case 'sin':
            $result = sin(deg2rad($number));
            break;
        case 'cos':
            $result = cos(deg2rad($number));
            break;
        case 'tan':
            $result = tan(deg2rad($number));
            break;
        case 'log':
            $result = log10($number);
            break;
        case 'ln':
            $result = log($number);
            break;
    }
}
?>

<form method="post" action="">
    <select name="function">
        <option value="sqrt">平方根</option>
        <option value="sin">正弦</option>
        <option value="cos">余弦</option>
        <option value="tan">正切</option>
        <option value="log">常用对数</option>
        <option value="ln">自然对数</option>
    </select>
    <input type="number" name="number" step="any" required>
    <button type="submit">计算</button>
</form>

计算器安全注意事项

在生产环境中实现计算器时,需要注意以下几点安全措施:

避免直接使用eval函数处理用户输入,这可能导致代码注入漏洞

对用户输入进行严格验证,只允许特定的数学运算符和数字

考虑使用专门的数学表达式解析库,如PHP-MathParser

对于复杂计算,可以在客户端使用JavaScript预先验证表达式

实现输入过滤和输出转义,防止XSS攻击

php实现计算器程序

标签: 计算器程序
分享给朋友:

相关文章

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…

小程序实现vue

小程序实现vue

在小程序中实现类似 Vue 的响应式开发体验 使用微信小程序原生语法结合 Vue 风格 微信小程序本身的数据绑定方式与 Vue 类似,可以通过以下方式模拟 Vue 的开发体验: // page.j…

vue小程序实现

vue小程序实现

Vue 实现小程序的方案 Vue 本身是用于构建 Web 应用的框架,但可以通过一些工具和框架将 Vue 代码转换为小程序代码。以下是几种常见的实现方案: 使用 uni-app 框架 uni-ap…

如何实现vue转小程序

如何实现vue转小程序

Vue转小程序的实现方法 Vue转小程序通常需要借助工具或框架,将Vue语法转换为小程序兼容的代码。以下是几种常见方法: 使用uni-app框架 uni-app是一个基于Vue.js的跨平台开发框…

vue实现手机小程序

vue实现手机小程序

Vue 实现手机小程序的方案 Vue 本身是一个前端框架,主要用于构建 Web 应用。若需开发手机小程序,需结合其他工具或框架。以下是常见的实现方案: 使用 Uni-app 框架 Uni-app…

react 如何开发小程序

react 如何开发小程序

React 开发小程序的解决方案 React 本身无法直接开发微信小程序,但可以通过以下工具或框架将 React 代码转换为小程序兼容的格式: Taro Taro 是一个多端统一开发框架,支持使用…