Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 4361)
+++ wp-includes/formatting.php	(working copy)
@@ -618,7 +618,14 @@
 	if (get_option('use_smilies')) {
 		// HTML loop taken from texturize function, could possible be consolidated
 		$textarr = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between
-		$output = implode('', preg_replace($wp_smiliessearch, $wp_smiliesreplace, $textarr));
+		$stop = count($textarr);// loop stuff 
+		for ($i = 0; $i < $stop; $i++) { 
+			$content = $textarr[$i]; 
+			if ((strlen($content) > 0) && ('<' != $content{0})) { // If it's not a tag 
+				$content = preg_replace($wp_smiliessearch, $wp_smiliesreplace, $content); 
+			} 
+			$output .= $content; 
+		}
 	} else {
 		// return default text.
 		$output = $text;
Index: wp-includes/vars.php
===================================================================
--- wp-includes/vars.php	(revision 4361)
+++ wp-includes/vars.php	(working copy)
@@ -87,7 +87,7 @@
 
 // generates smilies' search & replace arrays
 foreach($wpsmiliestrans as $smiley => $img) {
-	$wp_smiliessearch[] = '/(\s|^|[^<])?'.preg_quote($smiley, '/').'(\b|\s|$)/';
+	$wp_smiliessearch[] = '/(\s|^)'.preg_quote($smiley, '/').'(\s|$)/';
 	$smiley_masked = htmlspecialchars( trim($smiley) , ENT_QUOTES);
 	$wp_smiliesreplace[] = " <img src='" . get_option('siteurl') . "/wp-includes/images/smilies/$img' alt='$smiley_masked' class='wp-smiley' /> ";
 }
