Issue #1335388 by wojtha: Fixed Warning: strpos(): Empty delimiter in search_simplify_excerpt_match().

merge-requests/26/head
webchick 2012-03-24 00:36:00 -06:00
parent 1978413929
commit a6e6b2e96b
2 changed files with 20 additions and 0 deletions

View File

@ -1293,6 +1293,11 @@ function search_simplify_excerpt_match($key, $text, $offset, $boundary) {
$simplified_key = search_simplify($key);
$simplified_text = search_simplify($text);
// Return immediately if simplified key or text are empty.
if (!$simplified_key || !$simplified_text) {
return FALSE;
}
// Check if we have a match after simplification in the text.
if (!preg_match('/' . $boundary . $simplified_key . $boundary . '/iu', $simplified_text, $match, PREG_OFFSET_CAPTURE, $offset)) {
return FALSE;

View File

@ -1639,6 +1639,21 @@ class SearchExcerptTestCase extends DrupalUnitTestCase {
$result = preg_replace('| +|', ' ', search_excerpt('"abc def"', $text));
$this->assertTrue(strpos($result, '<strong>abc,def</strong>') !== FALSE, 'Phrase with keyword simplified into two separate words is highlighted with simplified match');
// Test phrases with characters which are being truncated.
$result = preg_replace('| +|', ' ', search_excerpt('"ipsum _"', $text));
$this->assertTrue(strpos($result, '<strong>ipsum </strong>') !== FALSE, 'Only valid part of the phrase is highlighted and invalid part containing "_" is ignored.');
$result = preg_replace('| +|', ' ', search_excerpt('"ipsum 0000"', $text));
$this->assertTrue(strpos($result, '<strong>ipsum </strong>') !== FALSE, 'Only valid part of the phrase is highlighted and invalid part "0000" is ignored.');
// Test combination of the valid keyword and keyword containing only
// characters which are being truncated during simplification.
$result = preg_replace('| +|', ' ', search_excerpt('ipsum _', $text));
$this->assertTrue(strpos($result, '<strong>ipsum</strong>') !== FALSE, 'Only valid keyword is highlighted and invalid keyword "_" is ignored.');
$result = preg_replace('| +|', ' ', search_excerpt('ipsum 0000', $text));
$this->assertTrue(strpos($result, '<strong>ipsum</strong>') !== FALSE, 'Only valid keyword is highlighted and invalid keyword "0000" is ignored.');
}
}