Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2008, 14:01
Avatar de intergus
intergus
 
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 17 años
Puntos: 3
reemplazo de cadena

Hola a todos

La funcion es de sobra conocida pero falla y no se que solución darle

Se trata de resaltar las palabras buscadas en un texto.

Cojo la frase introducida y la paso por un explode para obtener los trozos en un array

luego hago un foreach del array trozos y voy sustituyendo la palabra o trozo de la misma por un codigo html para resaltarla.

Hasta aqui todo bien e incluso funciona cuando hay varias palabras, pero gracias al foreach como recorre tantas veces como palabras haya en la busqueda pues puede dar la casuakidad que una de las palabras buscadas coincida con una palabra del codigo html y ahi se joroba todo, porque en la segunda pasada el codigo html forma parte del texto donde seguir buscando el resto de palabras del array y en la tercera pasada pues mas codigo y por tanto mas riesgo.

imagina que busco "comprar Spa" en la primera pasada resalta comprar metiendo el codigo <span style.......> en la segunda pasada resalta las palabras spa pero tambien lo queire haxer con la etiqueta <span> con lo cual se va todo a la m.....

Soluciones:

he pensado sustituir por una cadena rara como #@palabra@# y al finalizar el foreach entonces hacer un reemplazo con el codigo html de apertura para los #@ y con los codigos de cierre para @#

No se si es una chapuza????????

Se os ocurre alguna idea??????????????????