Foros del Web » Programando para Internet » PHP »

Cambiar color de fondo en palabras claves usadas en una búsqueda

Estas en el tema de Cambiar color de fondo en palabras claves usadas en una búsqueda en el foro de PHP en Foros del Web. Un saludo para toda la comunidad. Resulta que estoy implementando una aplicación para gestionar noticias y una de las funcionalidades con la que cuento es ...
  #1 (permalink)  
Antiguo 02/04/2011, 13:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Información Cambiar color de fondo en palabras claves usadas en una búsqueda

Un saludo para toda la comunidad. 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:
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;
    } 

Etiquetas: cadenas, expresiones_regulares, fondo, textos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.