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-12 00:32:30.000000000 +0200
@@ -279,10 +279,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($GLOBALS['base_url'] .'/'. $smiley->image) .'" title="'. check_plain($alt) .'" alt="'. check_plain($alt) .'" class="smiley-content" />', $chunk);
+          }
+          else {
+            $chunk = str_replace($a, '<img src="'. check_url($GLOBALS['base_url'] .'/'. $smiley->image) .'" title="'. check_plain($alt) .'" alt="'. check_plain($alt) .'" class="smiley-content" />', $chunk);
+          }
         }
       }
     }  
