Hola,
esto es una idea, prueba reemplazar
Código PHP:
$text = preg_replace("/(?!<\w+[^>]*)($needle)(?!>)/i","<span style=\"background:#FFFF9F\">\\1</span>", $haystack);
Nunca habia usado negar patrones (?!) asi que no es exactamente como va a funcionar. Tampoco lo puedo probar donde estoy. Perdon jejeje...
Si alguin tienen alguna sugerencia.....
Saludos