php实现页面查找
PHP实现页面查找功能
在PHP中实现页面查找功能通常涉及对数据库查询或文件内容的搜索。以下是几种常见的实现方法:
数据库查询搜索
对于存储在数据库中的内容,可以使用SQL的LIKE语句进行模糊匹配:
$searchTerm = $_GET['search'] ?? '';
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM pages WHERE content LIKE :search");
$stmt->execute([':search' => "%$searchTerm%"]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
文件内容搜索
如果需要搜索文件系统中的文本文件内容:
$directory = '/path/to/files';
$searchTerm = 'keyword';
$results = [];
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file) {
if ($file->isFile() && $file->getExtension() === 'txt') {
$content = file_get_contents($file->getPathname());
if (strpos($content, $searchTerm) !== false) {
$results[] = $file->getPathname();
}
}
}
全文索引搜索
对于更高效的搜索,可以考虑使用全文索引:
// 使用MySQL的全文索引
$stmt = $pdo->prepare("SELECT * FROM pages WHERE MATCH(content) AGAINST(:search IN BOOLEAN MODE)");
$stmt->execute([':search' => $searchTerm]);
正则表达式搜索
对于复杂的搜索模式,可以使用正则表达式:
$content = "Sample text with keywords";
$pattern = '/\bkeyword\w*\b/i';
preg_match_all($pattern, $content, $matches);
搜索结果高亮显示
在显示搜索结果时,可以高亮匹配的关键词:
function highlightSearchTerm($text, $term) {
return preg_replace("/($term)/i", '<span style="background-color:yellow">$1</span>', $text);
}
分页处理
对于大量搜索结果,实现分页功能:
$page = $_GET['page'] ?? 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$stmt = $pdo->prepare("SELECT * FROM pages WHERE content LIKE :search LIMIT $limit OFFSET $offset");
每种方法适用于不同的场景,数据库搜索适合结构化数据,文件搜索适合静态内容,全文索引提供更高性能,正则表达式则支持复杂匹配模式。







