导读:本期聚焦于小伙伴创作的《PHP表单处理手机号码:高效筛选、统计有效手机号与正则校验实现》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PHP表单处理手机号码:高效筛选、统计有效手机号与正则校验实现》有用,将其分享出去将是对创作者最好的鼓励。

PHP表单中处理和统计手机号码:自动过滤并计数

在Web开发场景中,经常需要收集用户提交的手机号信息,同时需要对无效的手机号进行过滤,并统计有效手机号的数量。本文将介绍如何通过PHP实现表单提交后手机号码的筛选、处理和计数功能。

功能需求分析

  • 提供一个HTML表单,允许用户输入多个手机号码,支持换行分隔输入

  • 提交表单后,PHP脚本接收输入的手机号数据

  • 按照中国大陆手机号规则过滤无效号码:长度为11位,以1开头,第二位是3-9的数字

  • 统计有效手机号的数量,并展示过滤后的有效号码列表

HTML表单设计

首先我们创建一个简单的表单页面,使用<textarea>标签让用户可以输入多个手机号,每个号码占一行:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>手机号筛选统计</title>
</head>
<body>
    <h3>请输入手机号码(每个号码占一行)</h3>
    <form method="post" action="handle_phone.php">
        <textarea name="phones" rows="10" cols="30" placeholder="例如:
13800138000
13912345678
12345678901"></textarea>
        <br><br>
        <input type="submit" value="提交筛选">
    </form>
</body>
</html>

PHP处理逻辑实现

接下来编写handle_phone.php脚本,实现手机号接收、过滤、统计的功能:

<?php
// 初始化变量
$validPhones = [];
$errorMsg = '';

// 判断是否有表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 检查是否提交了手机号字段
    if (!isset($_POST['phones']) || empty(trim($_POST['phones']))) {
        $errorMsg = '请输入至少一个手机号码';
    } else {
        // 获取输入的手机号字符串,按换行分割为数组
        $phoneStr = trim($_POST['phones']);
        $phoneList = explode("n", str_replace("r", "", $phoneStr));
        
        // 遍历每个手机号进行校验
        foreach ($phoneList as $phone) {
            $phone = trim($phone);
            // 跳过空行
            if (empty($phone)) {
                continue;
            }
            // 正则匹配中国大陆手机号规则:11位,1开头,第二位是3-9
            if (preg_match('/^1[3-9]d{9}$/', $phone)) {
                $validPhones[] = $phone;
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>手机号筛选结果</title>
</head>
<body>
    <h3>手机号筛选统计结果</h3>
    
    <?php if (!empty($errorMsg)): ?>
        <p style="color: red;"><?php echo htmlspecialchars($errorMsg); ?></p>
    <?php else: ?>
        <p>有效手机号数量:<strong><?php echo count($validPhones); ?></strong></p>
        
        <?php if (count($validPhones) > 0): ?>
            <p>有效手机号列表:</p>
            <ul>
                <?php foreach ($validPhones as $phone): ?>
                    <li><?php echo htmlspecialchars($phone); ?></li>
                <?php endforeach; ?>
            </ul>
        <?php else: ?>
            <p>未检测到有效手机号,请检查输入格式</p>
        <?php endif; ?>
    <?php endif; ?>
    
    <br>
    <a href="javascript:history.back()">返回重新输入</a>
</body>
</html>

核心逻辑说明

上述PHP脚本的核心逻辑可以分为以下几个部分:

  • 请求方法判断:通过$_SERVER['REQUEST_METHOD']检查是否为POST提交,避免直接访问脚本导致的错误

  • 数据预处理:将用户输入的包含换行的字符串,通过explode分割为数组,同时处理Windows和Unix系统的换行符差异

  • 正则校验:使用正则表达式/^1[3-9]d{9}$/匹配符合规则的手机号,其中^表示开头,$表示结尾,1匹配首位数字,[3-9]匹配第二位数字范围,d{9}匹配后续9位数字

  • 结果展示:使用count()函数统计有效手机号数量,通过遍历数组输出有效号码列表

扩展优化建议

如果需要更完善的功能,可以考虑以下扩展方向:

  • 去重处理:使用array_unique()函数过滤重复的手机号,避免重复计数

  • 运营商判断:根据手机号前三位数字,匹配对应的运营商(如130-139属于联通,134-139、147、150-152、157-159、178、182-184、187-188属于移动等)

  • 导出功能:将筛选后的有效手机号导出为CSV格式文件,方便后续数据处理

  • 输入格式兼容:支持用户使用逗号、空格等分隔符输入手机号,提升用户体验

总结

通过PHP结合正则表达式,可以快速实现表单提交手机号后的过滤和统计功能。核心是利用正则匹配规则筛选有效号码,再结合数组操作完成计数和展示。该方案逻辑清晰、实现简单,适合大多数需要手机号收集处理的业务场景。

PHP表单处理手机号码验证正则表达式数据筛选有效号码统计

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。