Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2008, 12:09
Avatar de oyeca2
oyeca2
 
Fecha de Ingreso: junio-2007
Mensajes: 33
Antigüedad: 16 años, 10 meses
Puntos: 1
Resaltar palabras en una busqueda

Tengo un problema al resaltar palabras de una busqueda probe con expresiones regulares, y utilice este codigo que econtre pero el problema es que taba pensando que pasa si el usuario realiza su busqueda de la siguiente manera:

"PHP a" entonces lo correcto es que busque la palabra PHP y la palabra "a" entonces ahi tambien esta el problema debido a que el resultado que me va a mostrar es el siguiente:
"an class='resaltado'>PHPan> es un lenguaje chevere",
bueno especifico que estoy buscando estas palabras dentro del texto
"PHP es chevere".
La funcion que utilizo para hacer el resaltado es:

function resaltar($buscar, $texto) {
$claves = explode(" ",$buscar);
$clave = array_unique($claves);
$num = count($clave);
for($i=0; $i < $num; $i++)
$texto = preg_replace("/(".trim($clave[$i]).")/i","<span class='resaltado'>\\1</span>",$texto);
return $texto;
}

Como se dan cuenta el problema es que reemplaza la letra "a" dentro de las etiquetas del html en este caso <span> alguien tiene alguna idea como puedo restringir eso o solucionar este problema