diff options
Diffstat (limited to 'inc/fulltext.php')
-rw-r--r-- | inc/fulltext.php | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/inc/fulltext.php b/inc/fulltext.php index 8f4db111d..7ee386063 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -394,19 +394,31 @@ function ft_snippet_re_preprocess($term) { return $term; } + if (UTF8_PROPERTYSUPPORT) { + // unicode word boundaries + // see http://stackoverflow.com/a/2449017/172068 + $BL = '(?<!\pL)'; + $BR = '(?!\pL)'; + } else { + // not as correct as above, but at least won't break + $BL = '\b'; + $BR = '\b'; + } + + if(substr($term,0,2) == '\\*'){ $term = substr($term,2); }else{ - $term = '\b'.$term; + $term = $BL.$term; } if(substr($term,-2,2) == '\\*'){ $term = substr($term,0,-2); }else{ - $term = $term.'\b'; + $term = $term.$BR; } - if($term == '\b' || $term == '\b\b') $term = ''; + if($term == $BL || $term == $BR || $term == $BL.$BR) $term = ''; return $term; } |