Título: Duda en Php como identificar un texto? Publicado por: free-articles en 17 Febrero 2013, 02:41 am Imagina que tengo un formulario o una casilla donde el usuario pone su nombre.
Imagina que ese usuario no pone su nombbre sino que pone idiota. Como puedo saber si el user escribe "idiota"? Mi intención es algo asi como que si pone idiota en la casilla le salga un mensaje algo asi: Por favor no insulte, introdúzca su usuario.. Alguien sabe como hacerlo? Gracias Título: Re: Duda en Php como identificar un texto? Publicado por: free-articles en 17 Febrero 2013, 02:44 am if { $user== "idiota" }
{ echo "ingrese user yno insulte", GRACIAS}; eso valdria? le quiero decir a php: SI USUARIO CONTIENE INSULTO HAZ ESTO SINO LO OTRO PERO TENGO UN PROBLEMA.. SI EL USUARIO ESCRIBE EN LA CASILLA ALGO COMO: ERES IDIOTA JJAJA YA NO RECONOCERIA LA VARIABLE PORQUE VA ENTRE PALABRAS.. ¿COMO IDENTIFICAR UNA PALABRA AUNQUE VAYA DENTRO DE UNA FRASE? Título: Re: Duda en Php como identificar un texto? Publicado por: #!drvy en 17 Febrero 2013, 07:43 am Para empezar, hacer un if por cada palabra es un tanto costoso.
Puedes tener un array lleno de palabras del tipo lista negra. Código Luego lo podrías comprobar con in_array(); Código
Lo segundo que comentas ya se complica. Podrías utilizar funciones como stristr() que buscaran la palabra en un string.. Código
El problema, es que si meto culo en la lista negra, con esa función, si pongo de usuario Crepusculo, la detectara como insulto. Ahí ya, tendrías que construir un regex que aisle las palabras entre espacios y otras cosas y se vuelve bastante complicado. Por eso, la mayoría prefieren tener una lista negra cortita con cosas básicas y para lo demás poner el "Reportar usuario" para que se le pueda reportar en caso de un nick no adecuado. Saludos Título: Re: Duda en Php como identificar un texto? Publicado por: free-articles en 17 Febrero 2013, 10:51 am Excelente
Citar El problema, es que si meto culo en la lista negra, con esa función, si pongo de usuario Crepusculo, la detectara como insulto Muy interesante porque seria más dificil jugármela pero una pregunta, Hay alguna manera de que aunque el tio ponga: lo que sea idiota Lo reconózca? Si lo ves complicado se me ocurrre minimizar las posibilidades de que el usuariio ponga palabras separadas por espacios.. pero igualmente si pone todo junto holaidiotatelacomes Pues me la como.. Muchas gracias por tu ayuda Título: Re: Duda en Php como identificar un texto? Publicado por: jdc en 17 Febrero 2013, 11:48 am Toca usar la creatividad, por ejemplo no es lo mismo "insulto" que " insulto "
Título: Re: Duda en Php como identificar un texto? Publicado por: SCM en 18 Febrero 2013, 21:02 pm Podrías meter en un array palabras que son un insulto aunque vayan junto a otras palabras, por ejemplo eresunidiota, idiota no es lo mismo que crepúsculo, que al final de una palabra forma otra verdaderamente.
Así que se me ocurre hacer un array para el primer tipo de insultos y recorrerlo usando stristr. Para palabras como culo, recorrer usando un explode que separe por espacios e identifique solamente la palabra malsonante. Para evitar que use palabras como eresunculo se me acaba de ocurrir también otra cosa. Parsear un diccionario web en linea, como puede ser http://www.rae.es/rae.html Si la palabra no existe, como es el caso de eresunculo, y stristr te devuelve que culo está en tu string de insultos, que deniegue la palabra, pues realmente no tiene ningún significado.. Y luego con un simple if que vea si la palabra es culo a secas y que la deniegue igualmente. Lo que pasa es que para parsear el diccionario, o bien haces muy bien el script, o se va a demorar un poco.. Un saludo. Título: Re: Duda en Php como identificar un texto? Publicado por: #!drvy en 18 Febrero 2013, 21:19 pm Parsear un diccionario esta bien.. el problema es que añade mucha carga y tiempo de ejecucion al script..
Por otro lado: Porque crees que ningún foro "conocido" trae este tipo de filtros ? Simplemente no es rentable. Ya te digo, manten una lista negra básica (con lo mas común) y dale la posibilidad a otros a reportar el usuario. Saludos Título: Re: Duda en Php como identificar un texto? Publicado por: SCM en 18 Febrero 2013, 21:27 pm Una pregunta sobre parsear, que serviría para este tema drvy. Si añades x puntos, por ejemplo, si la palabra empieza por C, no se podría hacer que solamente parsee una parte del diccionario, palabras que empiecen por C?
Me refiero: Punto A - Palabras por A Punto B - Palabras por B Punto C - Palabras por C Punto D - Palabras por D Si la palabra empieza por C, ejecutarlo que lea el contenido entre el punto C y el punto D, obviando todo lo demás. Esto es posible o la función tendría que parsear primero toda la web? Porque de ser así se le podrían aplicar ciertos filtros que haría el tiempo de respuesta mucho menor. Aunque no he practicado mucho en este tema, por lo que no sé si de todos modos eso tardaría también. Saludos. Título: Re: Duda en Php como identificar un texto? Publicado por: #!drvy en 18 Febrero 2013, 23:41 pm No la verdad es que no hace falta ir tan lejos. Puesto que un diccionario normalmente es una base de datos, solo hace falta hacer una búsqueda de la palabra exacta. Lo mismo pasa con la RAE, se puede hacer un script que busque la palabra y devuelva los resultados.
Código
En este caso devolvería algo así: Código
El problema como ya he mencionado es que añade un tiempo de ejecución bastante alto... y no es viable en paginas de mucho trafico donde lo tienes que comprobar cada 2x3 (ej: Los usuarios nuevos en el mes enero de este foro han sido 2259).. Edit: He estado jugando un poco xD Código
5 ejemplos: Idiota rae DETECTADO directo DETECTADO directo_plural LIMPIO precisa DETECTADO precisa_plural LIMPIO directo_separado DETECTADO directo_separado_plural LIMPIO idiotas rae DETECTADO directo LIMPIO directo_plural DETECTADO precisa DETECTADO precisa_plural DETECTADO directo_separado LIMPIO directo_separado_plural DETECTADO crepusculo rae LIMPIO directo LIMPIO directo_plural LIMPIO precisa DETECTADO precisa_plural LIMPIO directo_separado LIMPIO directo_separado_plural LIMPIO soyputo rae LIMPIO directo LIMPIO directo_plural LIMPIO precisa DETECTADO precisa_plural LIMPIO directo_separado LIMPIO directo_separado_plural LIMPIO Soy un puto rae LIMPIO directo LIMPIO directo_plural LIMPIO precisa DETECTADO precisa_plural LIMPIO directo_separado DETECTADO directo_separado_plural LIMPIO En base a TRUE o FALSE se puede sacar un porcentaje que en caso de que sea igual o mayor de por no valido el nick pero.... seguira fallando en muchos casos... y se puede evitar de muchas formas... c_u_l_o: rae LIMPIO directo LIMPIO directo_plural LIMPIO precisa LIMPIO precisa_plural LIMPIO directo_separado LIMPIO directo_separado_plural LIMPIO Saludos Título: Re: Duda en Php como identificar un texto? Publicado por: free-articles en 23 Febrero 2013, 18:04 pm Buenisimos, gracias.
Si alguien le sobra tiempo y ganas me gustaria aprender php con alguien que tenga al lado, y puedo exponer mis dudas ipso facto y ser respondido, es lo que me falta, .aunque sea por messenger. Nota: Algo sé pero no paso de variables, if, else y poco más Como pago yo puedo enseñarle a ganar dinero con marketing. Título: Re: Duda en Php como identificar un texto? Publicado por: 1mpuls0 en 26 Febrero 2013, 17:19 pm Buenisimos, gracias. Si alguien le sobra tiempo y ganas me gustaria aprender php con alguien que tenga al lado, y puedo exponer mis dudas ipso facto y ser respondido, es lo que me falta, .aunque sea por messenger. Nota: Algo sé pero no paso de variables, if, else y poco más Como pago yo puedo enseñarle a ganar dinero con marketing. Yo puedo enseñarte :P me gusta compartir lo que sé xD (sin necesidad de que me enseñes algo, aunque por otro lado estaria aprendiendo algo nuevo, solo digo que no tengo intenciones de enseñar por algo a cambio) Tengo una clase que verifica los insultos, pero lee las palabras de una base de datos y sirve para todos los posibles casos :P Si te interesa enviame un MP para pasarte mi email. Saludos. |