Skip to content

Commit

Permalink
fix multibyte issue in SearchWordHighlighter
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc Neuhaus committed May 9, 2018
1 parent 498c652 commit 5e7cba4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/SearchWordHighlighter.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,12 @@ public function highlight($words)
$words = preg_split('/[ ,\.\?\-]/s', trim($words, ' ,.?+-'));
}

$words = array_filter($words, function($word){
$words = array_filter($words, function ($word) {
return strlen($word) > 1;
});

// replace chained whitespace with a single space
$string = preg_replace('/[\s]+/s', ' ', $this->string);
$string = $this->string;

if ($this->wordsBeforeMatch > 0) {
Expand Down Expand Up @@ -125,13 +127,12 @@ public function cutBeforeMatch($content, $words)

// look for the position of the first search word
$startPosition = mb_strpos($content, $contentWord);

for ($i = 1; $i <= $this->wordsBeforeMatch; $i++) {
if (isset($contentWords[$key - $i])) {
$startPosition -= mb_strlen($contentWords[$key - $i]) + 1;
}
}
$content = $this->prefix . trim(substr($content, $startPosition));
$content = $this->prefix . trim(mb_substr($content, $startPosition));
break;
}
}
Expand Down
10 changes: 10 additions & 0 deletions tests/Unit/SearchWordHighlighterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,16 @@ public function getSomeHighlightingTestValues()
'wordsBeforeMatch' => 3,
'expecation' => 'Lorem ipsum <b>TÜV</b> sit amet, consectetur...',
),
array(
'string' => ' Resultater/løsninger igennem samarbejdeI Gothia håndterer vi både private og erhvervsdebitorer med at afvikle deres gæld på den bedste og hurtigste måde, så både vores kunder og debitorer er tilfredse med vores løsninger.Ved at have en god dialog med debitorerne, kan vi vurdere debitorernes vilje til at betale og deres betalingsevne. Sammen med vores scoringsmodel, finder vi den bedste løsning for alle og herved sikre jer et højt inddrivelsesniveau.I vores grundige samarbejde med debitorerne, finder vi den rette betalingsløsning, så vi værner om jeres brand og øger kundetilfredsheden.Gothia Debt Collection er en del af Arvato Financial Solutions, og vores inkassoløsning er inkluderet i vores portefølje af løsninger, der dækker hele kundens livscyklus: fra risikostyring og fakturering til factoring og inkasso. Læs mere om factoring og vores fakturering og rykkerservice her. Vil du vide mere om vores inkassoløsninger, så klik her    Vil I tale med vores ekspert? Susan Nymann Send en mail til Susan Nymann Vi har hjulpet mange mennesker med at få overblik over deres gæld. Sådan hjalp vi Telenor Sådan hjalp vi Telenor  Telenor Norge er e succesfuldt ”business case” på at finde balance mellem at inddrive gæld og fastholde værdifulde kunder. Derfor sammenligner de Arvatos resultater med andre inkassobureauer, hvor Arvato konstant ligger højest. Vil du vide mere om Telenors og Arvatos samarbejde for bedre inkassoinddrivelse?   Vores inkassoløsningertil jeres virksomhed Vores inkassoløsningertil jeres virksomhed ',
'words' => "debt",
'wrap' => '<b>|</b>',
'crop' => 3,
'prefix' => '...',
'suffix' => '...',
'wordsBeforeMatch' => 1,
'expecation' => '...kundetilfredsheden.Gothia <b>Debt</b> Collection...',
)
);
}
}

0 comments on commit 5e7cba4

Please sign in to comment.