PHP 正则过滤特殊符号的实现方法

季宁
季宁
发布时间:2026-10-14| 5人浏览过
原创

在开发 Web 应用时,对用户提交的姓名、昵称等字段进行特殊符号过滤是常见的安全与规范化需求。本文将展示如何利用 PHP 的 preg_match 函数结合特定的正则表达式,识别并拦截包含非字母、数字、汉字及 GB2323 简体中文以外的非法字符输入。

实现结果与目标

该方案旨在限制用户输入内容仅包含字母(a-zA-Z)、数字(0-9)以及中文汉字。任何尝试使用空格、常见英文/中文标点(如逗号、句号、问号、括号、引号、斜杠等)以及其他特殊符号的行为都将被阻断,并返回友好的修改提示。

准备条件

  • 已部署支持 PHP 的运行环境(如 Apache/Nginx + PHP 7+)。
  • 前端表单字段(用于获取 $user 变量)。
  • 服务器编码需正确设置为 GB2312 或 UTF-8(注:原文提及 GB2312,但在现代开发中推荐统一使用 UTF-8,若必须兼容旧系统可参考原逻辑,但需注意多字节字符处理)。

第 1 步:构建正则表达式规则

我们需要一个能够匹配所有“非法”字符的正则模式。以下是基于原文逻辑整理的核心正则:

if(preg_match("/[ '.,:;*?~\`!@#$%^&+=)(<>{}]|\\]|\\[|\/|\\\\\|\\"|\\\|/, $user)) {
    // 发现非法符号
}

规则解析:

  • /[...] /:字符类,匹配其中任意一个字符。
  • '.,:;*?~`!@#$%^&+=:匹配常见的英文标点和键盘符号。
  • (<>{}):匹配小括号、花括号和尖括号。
  • ]:\]:匹配右方括号。
  • [:\[:匹配左方括号。
  • /:\/:匹配正斜杠。
  • |:\\\\\| 或 \\\|:匹配反斜杠或竖线(注意转义层级)。
  • ":\\":匹配双引号。

第 2 步:执行 PHP 验证逻辑

将待检测的用户名存储在 $user 变量中,并使用 preg_match 进行匹配测试。如果返回 1(即存在匹配),说明包含非法符号,应终止流程并提示用户。

$user = $_POST['username']; // 假设从 POST 获取

// 检查是否包含被禁用的特殊符号
if(preg_match("/[ '.,:;*?~\`!@#$%^&+=)(<>{}]|\\]|\\[|\/|\\\\\|\\"|\\\|/, $user)) {
    echo '不要在名字里面整些特殊符号,请只使用字母、数字和汉字。';
    exit();
}

// 后续处理逻辑... 

完成判断与注意事项

当检测到非法输入时,脚本通过 exit() 立即中断,防止错误数据入库。在实际项目中,建议将错误信息存储到 Session 或数组中,以便在前端无刷新展示,而非直接 echo 后退出。

风险提示:

  1. 编码问题: 原文中提到浏览器需选择简体中文 GB2312。在现代 PHP 开发中,强烈建议全程使用 UTF-8 编码。若强制限制 GB2312,可能会引发乱码或截断问题。对于中文汉字的支持,UTF-8 下的正则通常使用 [一-龥] 更准确,而上述通用正则主要通过“排除法”允许所有未明确列出的字符(包括汉字)。
  2. 2. 安全性: 仅靠前端或简单的后端正则过滤不够全面,仍需配合预处理语句(Prepared Statements)防范 SQL 注入,以及对输出内容进行 HTML 实体转义防范 XSS。

简要总结

通过使用 preg_match 配合包含各类标点符号的特殊字符列表,可以简单有效地在 PHP 层面过滤掉不符合要求的用户名或昵称输入。虽然该方法依赖于黑名单机制(即列出不允许的),但对于防止大部分恶意符号和脏数据输入具有显著效果。

以上就是 PHP 过滤特殊符号正则表达的详细内容,更多关于 PHP 数据验证的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。