Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mark182 en 20 Febrero 2010, 18:22 pm



Título: Filtro de palabras ofensivas
Publicado por: mark182 en 20 Febrero 2010, 18:22 pm
Hola como esta?

Queria saber como se podria hacer un filtro de palabras ofensivas en un textarea?
O sea, hay un formulario con un textarea donde el usuario puede dejar comentarios que seran guardados en una base de datos y que aparecera en la web, si ese comentario tiene palabras ofensivas, quiero que no se guarde el comentario y que le informe al usuario sobre lo ocurrido. Como se puede hacer?

Muchas gracias. 


Título: Re: Filtro de palabras ofensivas
Publicado por: Castg! en 21 Febrero 2010, 00:20 am
Código
  1. <input type=button onclick='var tex=document.getElementById("textarea"); if (tex.value.split("palabra")) { tex.value = tex.value.replace("palabra", "******"); } document.form.submit(); '>

y creo que ahi tendria que ir.... silo queres en php es otra cosa....


Título: Re: Filtro de palabras ofensivas
Publicado por: KrossPock en 21 Febrero 2010, 00:40 am
En php:
Código:
<?php
$palabras=array("nabo","gil","palabra");// Aca va las palabras que no queres que aparescan
$texto="Este script lo hizo krosspock, que no es un gil ni un nabo :P";// este es el texto
$a =str_ireplace($palabras,"#@!%",$texto);// lo reemplazamos
echo "$a"//y lo imprimimos a.a
?>


Título: Re: Filtro de palabras ofensivas
Publicado por: ~ Yoya ~ en 21 Febrero 2010, 00:44 am
Aqui en PHP...
Código
  1. <?php
  2.  
  3. function detect($txt){//Funcion detectadora de insultos
  4.  
  5. $ins = array('idiota','loca');//Array que contiene los insultos a detectar
  6.  
  7. foreach ($ins as $insulto){//Pasamos el array a una variable
  8.  
  9. if(preg_match("/$insulto/i",$txt)){/*Usamos expreciones regulares
  10. para comprobar si en el texto existe algun insurto.
  11. Tambien uso el modificador i para que no diferencia entre mayuscula y minuscula*/
  12.  
  13. echo "Se a detectado insultos xD";
  14. exit;//Si se ejecuta el if() se manda un mensaje y finaliza el script
  15. }}
  16. return $txt;//Si no se detecta ningun insulto devuelve el texto
  17. }//Fin de la funcion
  18.  
  19.  
  20. $a = "Buenas como estan?";
  21. echo detect($a)."\n";
  22.  
  23. $b = 'Hola como estas loca he';
  24. echo detect($b)."\n";
  25.  
  26.  
  27.  
  28.  
  29. ?>


Título: Re: Filtro de palabras ofensivas
Publicado por: KrossPock en 21 Febrero 2010, 00:47 am
El mio e ma cortito y no consume tantos recursos xDD... hay que tratar de usar preg_match cuando realmente se necesitan expresiones regulares, sino str_replace o strpos


Título: Re: Filtro de palabras ofensivas
Publicado por: ~ Yoya ~ en 21 Febrero 2010, 00:54 am
Bueno en este caso es mejor crear una funcion, porque Optimizas los codes, yo para buscar texto, verificar o sacar, quitar siempre uso Expresiones Regulares, hay que acostumbrarse.
No es que sea mas colto, ya que pasa a ser una funcion, ademas no creo que gaste mucho recurso porque nadamas la funcion se lee una sola vez, tambien se puede hacer facilmente con POO...

Usas una función para detectar o un POO para detectar y tienes un buen code, el que hiciste va a gastar siempre mas recursos, porque lo mas seguro se usara en mas de una variable y se hara lo mismo una y otra vez y gastara mas recursos y mas lineas.


Título: Re: Filtro de palabras ofensivas
Publicado por: KrossPock en 21 Febrero 2010, 18:14 pm
Bueno en este caso es mejor crear una funcion, porque Optimizas los codes, yo para buscar texto, verificar o sacar, quitar siempre uso Expresiones Regulares, hay que acostumbrarse.
No es que sea mas colto, ya que pasa a ser una funcion, ademas no creo que gaste mucho recurso porque nadamas la funcion se lee una sola vez, tambien se puede hacer facilmente con POO...

Usas una función para detectar o un POO para detectar y tienes un buen code, el que hiciste va a gastar siempre mas recursos, porque lo mas seguro se usara en mas de una variable y se hara lo mismo una y otra vez y gastara mas recursos y mas lineas.

Se lo transforma en funcion y listo a.a

Código:
<?php
Function detect ($texto){
$palabras=array("nabo","gil","palabra");// Aca va las palabras que no queres que aparescan
$a =str_ireplace($palabras,"#@!%",$texto);// lo reemplazamos
return $a;
}

$y="hola nabo, no seas gil o Gil (para que veas que tambien borra mayusculas), aca iria otra palabra mas";
$t=detect($y);
echo "$y<br>$t"
?>


Título: Re: Filtro de palabras ofensivas
Publicado por: ~ Yoya ~ en 21 Febrero 2010, 18:18 pm
Si se escribe una palabra en mayuscula tu source no lo detecta


Título: Re: Filtro de palabras ofensivas
Publicado por: KrossPock en 21 Febrero 2010, 18:35 pm
Si se escribe una palabra en mayuscula tu source no lo detecta

Lo probaste? si que lo detecta, uso str_ireplace() no str_replace hasta puse esta linea:

$y="hola nabo, no seas gil o Gil (para que veas que tambien borra mayusculas), aca iria otra palabra mas";

para demostrarlo  :¬¬


Título: Re: Filtro de palabras ofensivas
Publicado por: ~ Yoya ~ en 21 Febrero 2010, 19:39 pm
Ps si man, tienes razón, aunque me gusta mas el mio xD.

Pd:Usa bbcode de code para php


Título: Re: Filtro de palabras ofensivas
Publicado por: mark182 en 21 Febrero 2010, 22:56 pm
Muchas gracias por sus respuestas...los probaré y veré cual es el que se acomoda mas a lo que quiero. Gracias.


Título: Re: Filtro de palabras ofensivas
Publicado por: KrossPock en 22 Febrero 2010, 03:36 am
Pd:Usa bbcode de code para php

xDDD no me habia dado cuenta