答案:本文介绍如何用PHP实现站内搜索功能,涵盖表单设计、关键词处理、数据库模糊查询、结果展示及安全优化。1. 使用GET方法提交搜索表单;2. 在search.php中获取并过滤关键词,防止空值或过短输入;3. 通过PDO预处理执行LIKE查询,防止SQL注入;4. 展示结果时高亮关键词并转义输出,防XSS;5. 建议添加输入验证、索引优化、分页和中文分词以提升性能与安全。

站内搜索是大多数网站必备的功能之一,PHP作为服务端脚本语言,可以轻松实现基于数据库的关键词检索功能。本文将介绍如何使用PHP实现一个简单高效的站内搜索功能,涵盖表单提交、SQL查询、结果展示及安全防护等关键环节。
用户通过HTML表单输入关键词,提交到处理脚本。表单建议使用GET方法,便于分享搜索链接。
<form action="search.php" method="GET">
<input type="text" name="keyword" placeholder="请输入搜索关键词" required>
<button type="submit">搜索</button>
</form>
在 search.php 中获取 keyword 参数,并进行基本过滤,防止空值或过短输入。
$keyword = trim($_GET['keyword'] ?? '');
if (empty($keyword) || strlen($keyword) < 2) {
echo "请输入有效的关键词";
exit;
}
使用 MySQLi 或 PDO 连接数据库,对目标字段(如标题、内容)进行 LIKE 匹配。推荐使用 PDO 预处理语句防止 SQL 注入。
立即学习“PHP免费学习笔记(深入)”;
try {
$pdo = new PDO("mysql:host=localhost;dbname=your_db", "username", "password");
$stmt = $pdo->prepare("SELECT id, title, content, created_time
FROM articles
WHERE title LIKE ? OR content LIKE ?
ORDER BY created_time DESC");
$searchTerm = "%{$keyword}%";
$stmt->execute([$searchTerm, $searchTerm]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("数据库错误:" . $e->getMessage());
}
遍历查询结果,输出匹配内容。可对关键词高亮显示,提升用户体验。
function highlight($text, $word) {
return str_ireplace($word, "<strong style='color:red'>$word</strong>", $text);
}
if (count($results) > 0) {
echo "<p>共找到 " . count($results) . " 条结果:</p>";
foreach ($results as $row) {
echo "<h3>" . htmlspecialchars(highlight($row['title'], $keyword)) . "</h3>";
echo "<p>" . htmlspecialchars(mb_substr(highlight($row['content'], $keyword), 0, 150)) . "...</p>";
echo "<small>发布时间:" . $row['created_time'] . "</small><hr>";
}
} else {
echo "未找到相关结果。";
}
为保障系统稳定与安全,需注意以下几点:
以上就是PHP如何实现站内搜索_PHP站内搜索功能的实现方法与代码讲解的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号