No hay error aparente en el codigo y lo unico que se me ocurre es que haya diferencia entre mayusculas y minusculas, por lo que podrias usar
str_ireplace() Cita:
Iniciado por JavierCS2007- Es más simple meter la variable dentro de un div con background: #88AAEE
div = elemento de bloque, no es lo ideal para contener palabras (frases) dentro de un texto de parrafo; el span esta bien.
Tal vez a lo que te refieres es a crear un estilo CSS y colocar <span class="resaltado">palabras resaltadas</span>, lo que si puede ser mas adecuado, pero primero debe obtener el resultado deseado y despues optimizarlo.