PHP实现关键词过滤需通过HTML表单提交(GET/POST)获取参数,用trim()和filter_var()等清洗输入,结合htmlspecialchars()防XSS、预处理语句防SQL注入,并根据精确匹配、模糊搜索或敏感词拦截等场景选择对应逻辑。

要在搜索框中实现关键词过滤,PHP本身不直接“加标签”,而是通过服务端逻辑处理用户提交的关键词,并结合 HTML 表单与 PHP 后端代码协同工作。关键不在加什么标签,而在于如何接收、清洗、匹配和返回结果。
1. HTML 搜索表单需正确传参
表单要使用 method="GET" 或 method="POST",并确保 name 属性明确,比如:
这样提交后,关键词会以 $_GET['q'] 形式到达 PHP 文件(如 search.php)。
2. PHP 端要安全获取并过滤输入
不能直接用原始参数查询数据库或做匹配。必须先做基础防护:
- 用 trim() 去首尾空格
- 用 htmlspecialchars() 防止 XSS(若用于输出)
- 用 filter_var($q, FILTER_SANITIZE_STRING) 或更严格的 FILTER_UNSAFE_RAW + 自定义清理(如去控制字符)
- 若用于数据库查询,必须走 预处理语句(MySQLi 或 PDO),绝不拼接 SQL
3. 过滤逻辑取决于你要做什么
常见三类场景及对应 PHP 处理方式:
-
精确匹配:用
===或in_array($q, $allow_list)判断是否在白名单内 -
模糊包含(如搜索标题):用
stripos($text, $q) !== false,注意大小写;批量查时建议改用数据库WHERE title LIKE '%?%'(配合预处理) -
敏感词拦截:读取词库数组,遍历
stripos($content, $word) !== false,命中即拦截或替换
4. 不推荐但常见误区
以下做法看似简单,实则危险或低效:
- 直接
str_replace($_GET['q'], '***', $text)—— 可能被绕过,且未校验输入合法性 - 用
eval()或create_function()动态构造过滤逻辑 —— 严重安全隐患 - 把关键词当字段名或表名拼进 SQL —— 典型 SQL 注入入口
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











