diff --git a/inc/html.php b/inc/html.php
index 50844da88515932c4372c0593d6ed15e6f7b4e93..8d48d5397260cbcae5b551f361f5985ea649b4b3 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -285,16 +285,31 @@ function html_show($txt=''){
  * Highlights searchqueries in HTML code
  *
  * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Harry Fuecks <hfuecks@gmail.com>
  */
 function html_hilight($html,$query){
-  $queries = preg_split ("/\s/",$query,-1,PREG_SPLIT_NO_EMPTY);
+  //split at common delimiters
+  $queries = preg_split ('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>]+/',$query,-1,PREG_SPLIT_NO_EMPTY);
   foreach ($queries as $q){
-    $q = preg_quote($q,'/');
-    $html = preg_replace("/((<[^>]*)|$q)/ie", '"\2"=="\1"? unslash("\1"):"<span class=\"search_hit\">".unslash("\1")."</span>"', $html);
+     $q = preg_quote($q,'/');
+     $html = preg_replace_callback("/((<[^>]*)|$q)/i",'html_hilight_callback',$html);
   }
   return $html;
 }
 
+/** 
+ * Callback used by html_hilight()
+ *
+ * @author Harry Fuecks <hfuecks@gmail.com>
+ */     
+function html_hilight_callback($m) {
+  $hlight = unslash($m[0]);
+  if ( !isset($m[2])) {
+    $hlight = '<span class="search_hit">'.$hlight.'</span>';
+  }
+  return $hlight;
+}
+
 /**
  * Run a search and display the result
  *
@@ -1163,4 +1178,4 @@ function html_resendpwd() {
 <?php
 }
 
-//Setup VIM: ex: et ts=2 enc=utf-8 :
\ No newline at end of file
+//Setup VIM: ex: et ts=2 enc=utf-8 :