From 77706e5bcb4f87a65f08a9b4fac0728771c78a1f 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 . '%"');
}
}