summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2010-10-02 18:38:27 +0200
committerAndreas Gohr <andi@splitbrain.org>2010-10-02 18:38:27 +0200
commitfeb563fa9c27209131711d3ef93ebf1f74aadb0d (patch)
tree4b0752ffd7c50b320b5f4992f59e82c0309c66a3
parentf3f7087bd8d0b583a3add1b38877a2b9ef39322e (diff)
parent26eb848c36688e459e5dfc46cdc68d87ed2bda0c (diff)
downloadrpg-feb563fa9c27209131711d3ef93ebf1f74aadb0d.tar.gz
rpg-feb563fa9c27209131711d3ef93ebf1f74aadb0d.tar.bz2
Merge branch 'master' of github.com:splitbrain/dokuwiki
-rw-r--r--inc/fulltext.php9
-rw-r--r--inc/html.php9
2 files changed, 16 insertions, 2 deletions
diff --git a/inc/fulltext.php b/inc/fulltext.php
index e90205e9c..7dae183c8 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -313,7 +313,7 @@ function ft_snippet($id,$highlight){
$len = utf8_strlen($text);
// build a regexp from the phrases to highlight
- $re1 = '('.join('|',array_map('preg_quote_cb',array_filter((array) $highlight))).')';
+ $re1 = '('.join('|',array_map('_ft_snippet_re_preprocess', array_map('preg_quote_cb',array_filter((array) $highlight)))).')';
$re2 = "$re1.{0,75}(?!\\1)$re1";
$re3 = "$re1.{0,45}(?!\\1)$re1.{0,45}(?!\\1)(?!\\2)$re1";
@@ -387,6 +387,13 @@ function ft_snippet($id,$highlight){
}
/**
+ * Wraps a search term in regex boundary checks.
+ */
+function _ft_snippet_re_preprocess($term) {
+ return '\b'.$term.'\b';
+}
+
+/**
* Combine found documents and sum up their scores
*
* This function is used to combine searched words with a logical
diff --git a/inc/html.php b/inc/html.php
index add559971..e1478b0a8 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -285,7 +285,7 @@ function html_draft(){
*/
function html_hilight($html,$phrases){
$phrases = array_filter((array) $phrases);
- $regex = join('|',array_map('preg_quote_cb',$phrases));
+ $regex = join('|',array_map('_html_hilight_re_preprocess', array_map('preg_quote_cb',$phrases)));
if ($regex === '') return $html;
$html = preg_replace_callback("/((<[^>]*)|$regex)/ui",'html_hilight_callback',$html);
@@ -293,6 +293,13 @@ function html_hilight($html,$phrases){
}
/**
+ * Wraps a search term in regex boundary checks.
+ */
+function _html_hilight_re_preprocess($term) {
+ return '\b'.$term.'\b';
+}
+
+/**
* Callback used by html_hilight()
*
* @author Harry Fuecks <hfuecks@gmail.com>