diff -urp --strip-trailing-cr ../smileys/smileys.module ./smileys.module
--- ../smileys/smileys.module	2009-06-27 17:54:50.000000000 +0200
+++ ./smileys.module	2009-09-13 15:53:09.000000000 +0200
@@ -249,6 +249,8 @@ function smileys_filter($op, $delta = 0,
 }
 
 function smileys_filter_process($text) {
+  global $base_url;
+
   $text = ' ' . $text . ' ';
   $list = _smileys_list(0, ' ORDER BY weight');
 
@@ -279,10 +281,12 @@ function smileys_filter_process($text) {
         $acronyms = explode(" ", $smiley->acronyms);
         $alt = str_replace('\\', '\\\\', check_plain($smiley->description));
         foreach ($acronyms as $a) {
-          if ($smiley->standalone)
-            $chunk = eregi_replace("([ ,\.\?!:\(\)\r\n\<\>])". preg_quote($a) ."([ ,\.\?!:\(\)\r\n\<\>])", "\\1<img src=\"". check_url($GLOBALS['base_url'] .'/'. $smiley->image) ."\" title=\"". check_plain($alt) ."\" alt=\"". check_plain($alt) ."\" class=\"smiley-content\"/>\\2", $chunk);
-          else
-            $chunk = eregi_replace(preg_quote($a), '<img src="'. check_url($GLOBALS['base_url'] .'/'. $smiley->image) .'" title="'. check_plain($alt) .'" alt="'. check_plain($alt) .'" />', $chunk);
+          if ($smiley->standalone) {
+            $chunk = preg_replace("/(?<=&nbsp;|\xC2\xA0|[ ,\.\?!:\(\)\r\n\<\>])". preg_quote($a) ."(?=&nbsp;|\xC2\xA0|[ ,\.\?!:\(\)\r\n\<\>])/i", '<img src="'. check_url($base_url .'/'. $smiley->image) .'" title="'. check_plain($alt) .'" alt="'. check_plain($alt) .'" class="smiley-content" />', $chunk);
+          }
+          else {
+            $chunk = preg_replace('/'. preg_quote($a) .'/i', '<img src="'. check_url($base_url .'/'. $smiley->image) .'" title="'. check_plain($alt) .'" alt="'. check_plain($alt) .'" class="smiley-content" />', $chunk);
+          }
         }
       }
     }  
