Foros del Web » Programando para Internet » PHP »

Búsqueda de un string dentro de otro string

Estas en el tema de Búsqueda de un string dentro de otro string en el foro de PHP en Foros del Web. Buenas, El problema es que tengo que buscar dentro de un texto que suele ser bastante largo ($texto) una palabra o concepto que puede ser ...
  #1 (permalink)  
Antiguo 19/03/2014, 03:46
 
Fecha de Ingreso: marzo-2014
Mensajes: 1
Antigüedad: 10 años, 1 mes
Puntos: 0
Búsqueda de un string dentro de otro string

Buenas,

El problema es que tengo que buscar dentro de un texto que suele ser bastante largo ($texto) una palabra o concepto que puede ser por ejemplo "MARIA SAENZ" ($string) y ahí meter un "<span>"

el caso es que en el $texto "MARIA SAENZ" lleva tildes --> "María Sáenz"

hay alguna manera de ignorar los acentos? No puedo limpiar los acentos del texto y del descriptor y hacer la búsqueda ya que luego al presentar el $texto tiene que llevarlos

he probado con str_ireplace()

he probado de hacer str_ireplace() normalizando el $texto y el $string con normalizer_normalize() y solo me soluciona el problema con las eñes, que tampoco me las cogía

he probado de limpiar el $texto y el $string, hacer la búsqueda, quedarme con la posición por ejemplo (98) y ir a la posición del $texto (sin limpiar) y añadirle allí el span pero si de la posición 0 a la 98 hay 3 tildes lo que antes era la posición 98 ahora es la 101 y el span queda movido de sitio.

posibles soluciones a mi problema y que no encuentro la forma

1- Hacer la búsqueda ignorando tildes

2- Contar los caracteres que llevan tildes del $texto

3- Alguna idea extraordinaria
  #2 (permalink)  
Antiguo 19/03/2014, 03:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Búsqueda de un string dentro de otro string

Normaliza todo el texto a mínúsculas, y no elimines las vocales con tildes; sustitúyelas por la misma vocal sin tilde. Y si te interesa, sustituye, las eñes por enes.

Normaliza de la misma forma el string a buscar. Y luego, como dices, actúa sobre el texto original sin normalizar.

Aquí he puesto una función "slugify" que te servirá para normalizar un texto con todo lo que dije.
http://www.forosdelweb.com/f18/tutor...1/#post4580628

Úsala así : Util:slugify($texto, " ");
  #3 (permalink)  
Antiguo 19/03/2014, 09:02
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Búsqueda de un string dentro de otro string

y por que mejor no usas la sentencia like de mysql o sql para realizar tus busquedas


Código PHP:
Ver original
  1. SELECT * FROM personas WHERE nombre LIKE '$variable%';

con eso va a dar lo mismo que un nombre maneje tilde o no

prueba con esto :)

Etiquetas: busqueda
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 06:37.