From d1690ee965dbe6ca51769b00bb6591e7d8f5fe4b Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Tue, 1 Jul 2025 17:13:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=A7=E5=93=81=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E8=AF=8D=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/common.php | 19 +++++++++++++++++++ app/index/controller/Product.php | 6 +++--- app/index/model/ProductModel.php | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/index/common.php b/app/index/common.php index de61e023..81d3df13 100644 --- a/app/index/common.php +++ b/app/index/common.php @@ -222,3 +222,22 @@ if (!function_exists('get_platform')) { return $platform; } } + +if (!function_exists('highlight_keywords')) { + /** + * 高亮关键词 + * @param string $item + * @param string $keywords + * @param array $class + * @return string + */ + function highlight_keywords(string $text, string $keywords, array $class=[]): string + { + return preg_replace_callback('/' . preg_quote($keywords, '/') . '+/i', function($match) use($text, $class) { + if (empty($match)) { + return $text; + } + return '' . $match[0] . ''; + }, $text); + } +} diff --git a/app/index/controller/Product.php b/app/index/controller/Product.php index 74510312..b16ded89 100644 --- a/app/index/controller/Product.php +++ b/app/index/controller/Product.php @@ -299,9 +299,9 @@ class Product extends Common 'query' => request()->param() ]) ->each(function ($item) use($keywords) { - $item['spu'] = str_replace($keywords, ''.$keywords.'', $item['spu']); - $item['name'] = str_replace($keywords, ''.$keywords.'', $item['name']); - $item['short_name'] = str_replace($keywords, ''.$keywords.'', $item['short_name']); + $item['spu'] = highlight_keywords($item['spu'], $keywords, ['redpoint']); + $item['name'] = highlight_keywords($item['name'], $keywords, ['redpoint']); + $item['short_name'] = highlight_keywords($item['short_name'], $keywords, ['redpoint']); return $item; }); View::assign('products', $products); diff --git a/app/index/model/ProductModel.php b/app/index/model/ProductModel.php index 5b8a74f3..a4be17ef 100644 --- a/app/index/model/ProductModel.php +++ b/app/index/model/ProductModel.php @@ -79,6 +79,6 @@ class ProductModel extends ProductBaseModel // 关键词搜索 public function searchKeywordsAttr($query, string $keywords) { - $query->whereRaw('BINARY spu LIKE "%' . $keywords . '%" OR BINARY name LIKE "%' . $keywords . '%" OR BINARY short_name LIKE "%' . $keywords . '%"'); + $query->whereRaw('spu LIKE "%' . $keywords . '%" OR name LIKE "%' . $keywords . '%" OR short_name LIKE "%' . $keywords . '%"'); } }