[ticket/15043] Update regexp

PHPBB3-15043
This commit is contained in:
Rubén Calvo 2018-09-26 15:15:07 +02:00 committed by Ruben Calvo
parent 13f7a8f82f
commit 02321c412c
No known key found for this signature in database

View file

@ -330,7 +330,7 @@ function get_context(string $text, array $words, int $length = 400)
$text_length = utf8_strlen($text); $text_length = utf8_strlen($text);
// Replace all spaces/invisible characters with single spaces // Replace all spaces/invisible characters with single spaces
$text = preg_replace("/[[:^print:] ]+/", ' ', $text); $text = preg_replace("/\s+/", ' ', $text);
// we need to turn the entities back into their original form, to not cut the message in between them // we need to turn the entities back into their original form, to not cut the message in between them
$text = html_entity_decode($text); $text = html_entity_decode($text);
@ -361,9 +361,11 @@ function get_context(string $text, array $words, int $length = 400)
$start = $end = 0; $start = $end = 0;
foreach ($word_indizes as $indize => $word) foreach ($word_indizes as $indize => $word)
{ {
if ($end+$characters_per_word+utf8_strlen($word) < $indize) // Check if the next word can be inside the current fragment of text
if ($end + $characters_per_word + utf8_strlen($word) < $indize)
{ {
$fragment = utf8_substr($text, $start, $end-$start); $fragment = utf8_substr($text, $start, $end-$start);
if ($start != 0) if ($start != 0)
{ {
$fragment = '... ' . $fragment; $fragment = '... ' . $fragment;
@ -371,16 +373,16 @@ function get_context(string $text, array $words, int $length = 400)
$fragments[] = $fragment; $fragments[] = $fragment;
$start = $indize-($characters_per_word/2); $start = $indize - ($characters_per_word / 2);
// Start fragment at the begining of a word // Start fragment at the begining of a word
$end = $start = ($start > 0) ? (utf8_strpos($text, ' ', $start-1)+1) : 0; $end = $start = ($start > 0) ? (utf8_strpos($text, ' ', $start - 1) + 1) : 0;
} }
$end += $characters_per_word; $end += $characters_per_word;
// End fragment at the end of a word // End fragment at the end of a word
$substring = utf8_substr($text, $start, $end-$start); $substring = utf8_substr($text, $start, $end-$start);
$end = $start+utf8_strrpos($substring, ' '); $end = $start + utf8_strrpos($substring, ' ');
} }
$fragment = utf8_substr($text, $start, $end-$start); $fragment = utf8_substr($text, $start, $end-$start);