Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Seleccionar campo si contiene determinadas palabras

Estas en el tema de Seleccionar campo si contiene determinadas palabras en el foro de Bases de Datos General en Foros del Web. Buenas. Estaba haciendo un sistema de banear mensajes en un foro que contuviesen insultos, y estoy un poco perdido de como hacerlo. Podría hacer una ...
  #1 (permalink)  
Antiguo 08/05/2009, 04:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Seleccionar campo si contiene determinadas palabras

Buenas. Estaba haciendo un sistema de banear mensajes en un foro que contuviesen insultos, y estoy un poco perdido de como hacerlo.

Podría hacer una select con un campo_texto LIKE '%tonto%' OR campo_texto LIKE '%memo%' OR.... y funcionaria, pero me da que es un poco tosco, no?

¿Se puede hacer de una forma mas clara y corta? O sin LIKE, pillándolas todas y luego en el bucle mostrar las que no tengan tal o cual insulto, con un array y funciones de cadenas. Toda ayuda, consejo, sugerencia o idea se agradece. Saludos!
  #2 (permalink)  
Antiguo 11/05/2009, 01:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Sonrisa Respuesta: Seleccionar campo si contiene determinadas palabras

Nadie puede echarme un cable plis?
  #3 (permalink)  
Antiguo 11/05/2009, 04:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Seleccionar campo si contiene determinadas palabras

Lo que yo haría:
una base de datos con la lista de palabras prohibidas o de sus raíces; piensa que pueden escribirlas en distinto género y número, y en el caso de los verbos con distintos tiempos, etc. Luego, ya con PHP crea una función y compara cada palabra del formulario (cargadas en un array) con todas las del array que te traes desde la base de datos o directamente con lo incluido en la base de datos. Pregunta en el foro PHP, y verás que te ayudan a preparar una función como esa. Piensa que lo que analiza es cada palabra, de la primera a la última de un texto (previamente cargadas en un array), y la compara con todas las de la lista de la base de datos con añadidos por delante y detrás (si se trata de raíces), y haces una sustitución de las mismas o bien bloqueas el texto (esto sería más rápido, pues al encontrar la primera envías el aviso y no sigues buscando; pero si quieres marcarlas y sustituirlas, tendrás que leer hasta el final. Es lo que se me ocurre.
El formulario no debe ser muy largo para evitar ralentizar la carga.
Pero esto es realmente programación (en tu caso, por lo que dices, PHP). Pregunta en el foro PHP, porque seguro que te orientan mejor.
Otra posibilidad: Cargas las palabras de determinado número de letras, más de tres, en un array y con ellas formas una cadena de búsqueda del tipo where campotabla IN ('palabra1','palabra2', 'palabra3', etc.) en la base; esta consulta te indicará si hay alguna palabra de esa lista. Con eso puedes bloquear, pero si quieres sustituir o marcar, tendrás que comparar cada palabra con todas las de la base, y eso es array con array.

Última edición por jurena; 11/05/2009 a las 06:30
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 21:49.