El algoritmo que estoy intentando implementar recibe como parámetro dos variables, la primera "$contenido" es una variable string que contiene el texto de una noticia y la segunda "$palabras" es un array de string que contiene las palabras clave que utilizó el usuario para hacer la búsqueda, es decir las palabras que yo deseo resaltar con otro color de fondo en el texto de la noticia.
He llegado a un algoritmo que me funciona parcialmente pues no me resalta por ejemplo las palabras cuando tienen tilde y además también me resalta partes de palabras por ejemplo si una palabra clave que utilizó el usuario en la búsqueda fue "casa" y en el texto de la noticia aparece la palabra casador esta se resalta con el color de fondo cuando no debería, en definitiva acá les pongo el código y si me pueden dar algunas ideas de ante mano se los agradezco.
Código PHP:
public function resaltarFondoPalabras($contenido, $palabras) {
// Se definen 8 colores para utilizar
$colores = array('#ffff66', '#a0ffff', '#99ff99', '#ff9999', '#8dc2f3', '#e0bcf6', '#b7b5b5', '#ff6600');
$j = 0;
foreach ($palabras as $palabra) {
$contenido = str_ireplace("$palabra", "<span style=\"background-color: $colores[$j]\">$palabra</span>", $contenido);
$j++;
if ($j > 7)
$j = 0;
}
return $contenido;
}