Buenas nuevamente, los códigos que me sugirieron me sirven perfectamente para el propósito inicial que tenía pero ahora quiero hacer algo más relacionado con el tema inicial. Resulta que estoy implementando una aplicación para gestionar noticias y una de las funcionalidades con la que cuento es la posibilidad de realizar búsquedas avanzadas por palabras clave, entonces lo que deseo hacer es que en el texto de las noticias que me da el sistema como resultado de las búsquedas se resalten con un color de fondo las palabras clave que el usuario utilizó para hacer la búsqueda, algo parecido a la cache de google.
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:
Ver originalpublic 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;
}