From 76e9bab5874bae7c3a4d993f4943e477df402e3b Mon Sep 17 00:00:00 2001 From: "pontus.horn" Date: Sat, 17 Aug 2019 23:45:25 +0200 Subject: [PATCH] Support unicode case-insensitive matching --- 40-PicoSearch.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/40-PicoSearch.php b/40-PicoSearch.php index e53a53f..829b34f 100644 --- a/40-PicoSearch.php +++ b/40-PicoSearch.php @@ -125,7 +125,7 @@ class PicoSearch extends AbstractPicoPlugin public function getSearchRankForPage($page) { // If there's an exact match in the title, skip a bunch of work and give it a very high score $escaped_search_terms = preg_quote($this->search_terms, '/'); - if (preg_match("/\b$escaped_search_terms\b/i", $page['title']) === 1) { + if (preg_match("/\b$escaped_search_terms\b/iu", $page['title']) === 1) { return 5; } @@ -154,17 +154,17 @@ class PicoSearch extends AbstractPicoPlugin $searchTermValue = $this->isLowValueWord($searchTerm) ? 0.2 : 1; $escapedSearchTerm = preg_quote($searchTerm, '/'); - $fullWordMatches = preg_match_all("/\b$escapedSearchTerm\b/i", $content); + $fullWordMatches = preg_match_all("/\b$escapedSearchTerm\b/iu", $content); if ($fullWordMatches > 0) { return min($fullWordMatches, 3) * $searchTermValue; } - $startOfWordMatches = preg_match_all("/\b$escapedSearchTerm\B/i", $content); + $startOfWordMatches = preg_match_all("/\b$escapedSearchTerm\B/iu", $content); if ($startOfWordMatches > 0) { return min($startOfWordMatches, 3) * 0.5 * $searchTermValue; } - $inWordMatches = preg_match_all("/\B$escapedSearchTerm\B/i", $content); + $inWordMatches = preg_match_all("/\B$escapedSearchTerm\B/iu", $content); return min($inWordMatches, 3) * 0.05 * $searchTermValue; }