Foros del Web » Programando para Internet » PHP »

Definir palabra en texto. Crear el link automaticamente al detectarla en la BD.

Estas en el tema de Definir palabra en texto. Crear el link automaticamente al detectarla en la BD. en el foro de PHP en Foros del Web. Buenas Imaginemos que tenemos un texto científico o informático lleno de palabras importadas del inglés y poco conocidas, o bien algún texto de química donde ...
  #1 (permalink)  
Antiguo 27/02/2009, 11:33
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 5 meses
Puntos: 14
De acuerdo Definir palabra en texto. Crear el link automaticamente al detectarla en la BD.

Buenas

Imaginemos que tenemos un texto científico o informático lleno de palabras importadas del inglés y poco conocidas, o bien algún texto de química donde tengamos que definir el concepto de una palabra.

Yo tengo en la base de datos metidas las palabras con su definición correspondiente, pongamos que son 100 o 200.

Mi intención es la de no tener que meter a mano los links en las palabras a definir en los artículos correspondientes, sino que estos links se creen de manera automática al idenficiar en el texto una palabra que tengo en mi base de datos.

¿cómo se podría hacer esto?
Basicamente buscar las palabras de la base de datos en el texto y cuando la encuentre sustitirulo por una expresión de link: <a href="?palabra=texto">texto</a>


¿Como puedo buscar todas las palabras de la base de datos en el texto?
A mi se me ocurre buscar una a una, recorriendo el texto tantas veces como palabras hubiera en la BD, pero... estoy seguro e que puede haber otro modo...
¿Un vector de palabras tal vez?

Gracias de antemano.
Saludos.
  #2 (permalink)  
Antiguo 27/02/2009, 12:09
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

Creo que str_ireplace() te puede andar muy bien. Buscas la palabra que queres, y lo remplazas por un "<a href=" a lo que necesites hacer...

http://www.php.net/str_ireplace

Saludos!
  #3 (permalink)  
Antiguo 27/02/2009, 12:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

Ciertamente puedes ir checando a la hora de imprimir el texto usando strtok asi por cada palabra empiezas a buscar, y debes de guardar un cache para en el caso de que encuentres la definicion no tengas que re-buscar e ir a la BDD.

Saludos
  #4 (permalink)  
Antiguo 28/02/2009, 05:41
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 5 meses
Puntos: 14
Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

Gracias a los dos.

Creo que la opción de usar str_ireplace me ha gustado mucho.
De este modo no necesito caché ni nada ¿no?
Paso la función tantas veces como palabras diferentes tenga que buscar y listo.

Saludos.
  #5 (permalink)  
Antiguo 28/02/2009, 11:33
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

http://dev.mysql.com/doc/refman/5.1/...xt-search.html
  #6 (permalink)  
Antiguo 28/02/2009, 17:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

Claro pero que pasará con las palabras que no esten en el texto, creo deberías de hacer una comparativa para que veas que función da menos carga y se ejecuta más rápido.

Saludos
  #7 (permalink)  
Antiguo 01/03/2009, 06:02
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 5 meses
Puntos: 14
De acuerdo Respuesta: Definir palabra en texto. Crear el link automaticamente al detectarla en l

Cita:
Iniciado por GatorV Ver Mensaje
Claro pero que pasará con las palabras que no esten en el texto, creo deberías de hacer una comparativa para que veas que función da menos carga y se ejecuta más rápido.
Si una palabra a buscar no está en el texto no pasa nada con str_ireplace, el texto se queda como está.

¿Te refieres a que aumentaría el tiempo de ejecución del script?

¿No se podría simplemente antes de realizar la función str_ireplace usar otra para comprobar que la palabra a buscar existe en el texto?
Aunque bueno, no se si el resultado en el tiempo de ejecución sería igual o incluso peor :)=

Saludos.
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 04:48.