yarri / full-text-search-query-like
FullTextSearchQueryLike 是一个 PHP 类,它将搜索字符串转换为带有 LIKE 操作符的智能 SQL 条件。
v0.2
2019-03-23 08:50 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- atk14/tester: *
This package is auto-updated.
Last update: 2024-09-25 10:13:40 UTC
README
这是一个 PHP 类,它将搜索字符串转换为带有 LIKE 操作符的智能 SQL 条件。
FullTextSearchQueryLike 已在 PHP 5.6 到 8.1 版本上进行了全面测试。
基本用法
假设有一个名为 articles 的表,其中包含一个我们希望用户可以搜索的字段 title。
$q = $_GET["search"]; // Here comes a user query string, e.g. "beer and wine"
$ftsql = new FullTextSearchQueryLike("title");
if($ftsql->parse($q)){
$search_condition = "WHERE ".$ftsql->get_formatted_query(); // e.g. "WHERE title LIKE '%beer%' AND title LIKE '%wine%'"
}
$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";
转换示例
其他一些特性...
在更多字段中搜索
$q = $_GET["search"];
$ftsql = new FullTextSearchQueryLike("title||' '||body||' '||author");
// or
// $ftsql = new FullTextSearchQueryLike(["title","body","author"]);
if($ftsql->parse($q)){
$search_condition = "WHERE ".$ftsql->get_formatted_query();
}
$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";
不区分大小写的搜索
$q = $_GET["search"];
$ftsql = new FullTextSearchQueryLike("UPPER(title||' '||body||' '||author)");
if($ftsql->parse(strtoupper($q))){
$search_condition = "WHERE ".$ftsql->get_formatted_query();
}
$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";
变量绑定
这在 Oracle 数据库中非常有用。
$q = $_GET["search"]; // Here comes a user query string, e.g. "beer and wine"
$ftsql = new FullTextSearchQueryLike("title");
if($ftsql->parse($q)){
$bindings = [];
$search_condition = "WHERE ".$ftsql->get_formatted_query_with_binds($bindings); // e.g. "WHERE title LIKE :search_word_021 AND title LIKE :search_word_022"
}
$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";
var_dump($bindings); // e.g. [":search_word_021" => "%beer%", ":search_word_022" => "%wine%"]
关键字高亮器
别忘了使用我的其他工具来在 HTML 输出页面上高亮显示搜索词。
https://packagist.org.cn/packages/yarri/keywords-highlighter
安装
使用 Composer 安装 FullTextSearchQueryLike。
composer require yarri/full-text-search-query-like
测试
在包目录中运行
composer update --dev
cd test
../vendor/bin/run_unit_tests
最后提醒
说实话,代码风格并不出色,所有注释都是捷克语。源代码是从一个非常旧的项目中提取出来的。但是,它一直工作得很好,非常可靠。
我真的很喜欢它,并在我启动的每个新项目中安装它。如果你觉得它很有用,我会很高兴。
许可证
FullTextSearchQueryLike 是免费软件,根据 MIT 许可证 条款发布。