php搜索实现
PHP 搜索实现方法
在 PHP 中实现搜索功能可以通过多种方式完成,以下是几种常见的方法:
数据库全文搜索
使用 MySQL 或其他数据库的全文搜索功能,例如 LIKE 或 FULLTEXT 索引:
$searchTerm = $_GET['search'];
$query = "SELECT * FROM products WHERE name LIKE '%$searchTerm%'";
$result = mysqli_query($connection, $query);
对于更高效的全文搜索,可以使用 MATCH...AGAINST:
$query = "SELECT * FROM products WHERE MATCH(name, description) AGAINST('$searchTerm')";
使用搜索引擎集成
集成 Elasticsearch 或 Algolia 等专业搜索引擎:

// Elasticsearch 示例
$client = Elasticsearch\ClientBuilder::create()->build();
$params = [
'index' => 'products',
'body' => [
'query' => [
'match' => [
'name' => $searchTerm
]
]
]
];
$response = $client->search($params);
文件内容搜索
搜索文件系统中的文本内容:
$directory = '/path/to/files';
$files = glob("$directory/*.txt");
$results = [];
foreach ($files as $file) {
$content = file_get_contents($file);
if (strpos($content, $searchTerm) !== false) {
$results[] = $file;
}
}
数组过滤搜索
对内存中的数组数据进行搜索:

$products = [...]; // 产品数组
$filtered = array_filter($products, function($item) use ($searchTerm) {
return stripos($item['name'], $searchTerm) !== false;
});
高级搜索功能实现
实现多条件组合搜索:
$query = "SELECT * FROM products WHERE 1=1";
if (!empty($name)) {
$query .= " AND name LIKE '%$name%'";
}
if (!empty($category)) {
$query .= " AND category_id = $category";
}
搜索安全注意事项
防止 SQL 注入攻击:
$searchTerm = mysqli_real_escape_string($connection, $_GET['search']);
// 或使用预处理语句
$stmt = $connection->prepare("SELECT * FROM products WHERE name LIKE ?");
$searchParam = "%$searchTerm%";
$stmt->bind_param("s", $searchParam);
$stmt->execute();
搜索结果分页
实现搜索结果分页:
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$query = "SELECT * FROM products WHERE name LIKE '%$searchTerm%' LIMIT $offset, $perPage";
每种方法适用于不同的场景,数据库搜索适合结构化数据,文件搜索适合文档系统,而专业搜索引擎则适合大规模数据和高性能需求。






