summaryrefslogtreecommitdiff
path: root/inc/html.php
diff options
context:
space:
mode:
authorGina Haeussge <gina@foosel.net>2010-10-02 18:04:09 +0200
committerGina Haeussge <gina@foosel.net>2010-10-02 18:07:51 +0200
commit26eb848c36688e459e5dfc46cdc68d87ed2bda0c (patch)
tree9786184ae23ab61ca2ad0ce6b12f8e06bfb1a4d2 /inc/html.php
parent92eec8e87a5bb7403eb3128cfb87c26a5d1bbb37 (diff)
downloadrpg-26eb848c36688e459e5dfc46cdc68d87ed2bda0c.tar.gz
rpg-26eb848c36688e459e5dfc46cdc68d87ed2bda0c.tar.bz2
FS#1353: Only highlight isolated occurences of search term, not those where it's part
of another term. Word boundaries are now respected.
Diffstat (limited to 'inc/html.php')
-rw-r--r--inc/html.php9
1 files changed, 8 insertions, 1 deletions
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>