Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ramonszo

Detectar palavras sem sentido

Recommended Posts

Use o STR_REPLACE

 

$var = array ("palavras que você quer que sejam substituidas");

str_replace($var, "substituir por", $variavel_do_formulario);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o STR_REPLACE

 

$var = array ("palavras que você quer que sejam substituidas");

str_replace($var, "substituir por", $variavel_do_formulario);

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

conforme o que o diogo comentou seria possível apenas se tiver um dicionário inteiro no banco de dados

 

dependendo do caso pode ser viável fazer essa filtragem

 

senão... seria perda de tempo e trabalho inutil..

 

 

se for realmente necessário fazer tal filtragem, cadastro um dicionário inteiro num banco de dados. Deve existir já pronto, tente procurar no google ou emule, utorrent, etc..

 

depois disso pode também aplicar palavras que tenham alguma associação

 

por exemplo, no dicionário não existe a palavra "você"

entao teria que ter um banco de dados de relacionamentos

palavra original		 palavra relacionada
"você"					 --->   "você"

 

se não tiver tempo pra elaborar algo complexo pode simplesmente detectar se a palavra possui vogais e consoantes

 

na gramática da língua portuguesa, a maioria das palavras possuem vogais entre consoantes

 

se detectar uma palavra com 3 consoantes seguidas, provavelmente é uma palavra inexistente

 

procure por referencias gramaticais para aplicar o que for viável para o seu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só queria entender oq voce faria com isso! asduhhasduhudauhsdas

 

na verdade a utilizade é grande, e existe sistemas que usam isso ha tempos, por exemplo aqui no forum....

 

filtragem de palavrões, girias de internet, palavras usadas em larga escala que sao escritas erradas .... mas é apenas uma melhoria de um sistema. Leva tempo pra cadastrar as palavras necessárias....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo, detectar mais de 4 consoantes, ou 4 vogais... daí ja da pra ver que têm algo errado... tem como detectar isso?

Mas tem que 'UN'filtrar as palavras: rsrsrs, kkkkkkkkkkk, e etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu fiz um programa pra verificar a ocorrencia de 4 consoantes seguidas como você falou e deu certo experimenta ai http://forum.imasters.com.br/public/style_emoticons/default/grin.gif .

 

<?php
	// String que contem a palavra/frase a ser filtrada.
	$palavra = "Brrruuuuunnnnnooooo";
	
	// Converte a string a ser filtrada em um array onde cada posição do array irá conter um caractere.
	$palavra2 = str_split($palavra);
	
	// Repete o comando por toda a string a ser filtrada.
	for ($i=0; $i<=strlen($palavra); $i++)
	{
		// Forma uma nova string com quatro letras
		$letras = $palavra2[$i] . $palavra2[$i+1] . $palavra2[$i+2] . $palavra2[$i+3];
		
		// Verifica se há ocorrencia de vogal nessa string
		$contador1 = substr_count($letras, "a");
		$contador2 = substr_count($letras, "e");
		$contador3 = substr_count($letras, "i");
		$contador4 = substr_count($letras, "o");
		$contador5 = substr_count($letras, "u");
		
		// Caso não haja ocorrencia de volgal executa o comando de deletar a string contendo o erro.
		if ($contador1 == 0 and $contador2 == 0 and $contador3 == 0 and $contador4 == 0 and $contador5 == 0)
		{ $palavra = ""; }
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além do orkut, já recebi e-mails em formulario de contato com estas palavras sem sentido.

 

 

gienfo@fknfksf.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu melhorei o código acima e trasnformei em uma função que agora verifica a ocorrencia de 4 vogais seguidas tambem.

 

Essa função retorna $palavra = true se não tiver nenhuma sequencia de vogais ou consoantes maior que 3 e $palavra = false se isso ocorrer.

 

<?php
	// String que contem a palavra/frase a ser filtrada EX: $palavra = "Brrruuuuunnnnnooooo";
	// Inicia a função
	function PalavrasSemSentido($palavra)
	{
		// Converte a string a ser filtrada em um array onde cada posição do array irá conter um caractere.
		$palavra2 = str_split($palavra);
		
		// Conta quantas letras a string contem e subtrai quatro para determinar o número de vezes que esta função deve ser executada.
		$quant = strlen($palavra) - 4;
		
		// Comando repetidor para filtrar toda a string.
		for ($i=0; $i<=$quant; $i++)
		{
			// Forma uma nova string com quatro letras
			$letras = $palavra2[$i] . $palavra2[$i+1] . $palavra2[$i+2] . $palavra2[$i+3];
			
			// Verifica se há ocorrencia de vogal nessa string
			$contador1 = substr_count($letras, "a");
			$contador2 = substr_count($letras, "e");
			$contador3 = substr_count($letras, "i");
			$contador4 = substr_count($letras, "o");
			$contador5 = substr_count($letras, "u");
			
			// Caso não haja ocorrencia de volgal executa o comando de deletar a string contendo o erro.
			if ($contador1 == 0 and $contador2 == 0 and $contador3 == 0 and $contador4 == 0 and $contador5 == 0)
			{ $palavra = false; }
		}
		
		// Agora verifica a ocorrencia de 4 vogais ou mais seguidas.
		for ($i=0; $i<=$quant; $i++)
		{
			// Forma uma nova string com quatro letras
			$letras = $palavra2[$i] . $palavra2[$i+1] . $palavra2[$i+2] . $palavra2[$i+3];
			
			// Verifica se há ocorrencia de consoante nessa string
			$consoantes = array ("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","w","x","y","z");

			for ($a=0; $a<=19; $a++)
			{	$contador[$a] = substr_count($letras, $consoantes[$a]);	}
			
			// Caso não haja ocorrencia de vogal executa o comando de deletar a string contendo o erro.
			if ($contador[0]==0 and $contador[1]==0
			and $contador[2]==0 and $contador[3]==0 
			and $contador[4]==0 and $contador[5]==0 
			and $contador[6]==0 and $contador[7]==0 
			and $contador[8]==0 and $contador[9]==0 
			and $contador[10]==0 and $contador[11]==0 
			and $contador[12]==0 and $contador[13]==0 
			and $contador[14]==0 and $contador[15]==0 
			and $contador[16]==0 and $contador[17]==0 
			and $contador[18]==0 and $contador[19]==0)
			{ $palavra = false; }
		}
		
		return $palavra;
	}
?>

Para chamr essa função por exemplo para validar um e-mail vindo de outra pagina por POST bastaria o seguinte.

 

$email = $_POST["email"];

include "diretorio/nome_do_arquivo_acima.php";	   //abre a função
$valida = PalavrasSemSentido($email);					//executa a função

if ($valida == false)											 //verifica o se o valor retornado é falso
{ echo "Por favor digite um e-mail válido.<br />";   $erro=1;  }

Ou mais ou menos isso http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu ae pela função, vou testar ela, hehehehe.

 

nao sei se vcs tem orkut, mas é q por exemplo, quando recebemos um spam, vem uma palavra sem sentido, emails sem sentido, e etc, essa seria a utilidade do script..

Compartilhar este post


Link para o post
Compartilhar em outros sites

o caso do email sem sentido e pra burlar a proteção xxx@xxx.xxx que a maioria dos sistemas tem...

 

o problema de utilizar a função para verificar 4 consoantes seguidas e que aqui no portugues você nao terá problemas, mas em outras idiomas provavelmente ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa aí....

 

function ColetorDeLixo(str) {
 return preg_match("/[aeiou]{3,}|[bcdfghjklmnpqrstvxzywç]{3,}/gi", str);
}

 

Se a função retornar true é porque a string passada tem lixo, se retornar false tá tudo ok!

 

 

Abraços a todos

 

PS: Editei a função as 16:36, deixei ela mais sensível. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa aí....

 

function ColetorDeLixo(str) {
 return preg_match("/[aeiou]{3,}|[bcdfghjklmnpqrstvxzywç]{3,}/gi", str);
}

 

Se a função retornar true é porque a string passada tem lixo, se retornar false tá tudo ok!

 

 

Abraços a todos

 

PS: Editei a função as 16:36, deixei ela mais sensível. :)

 

Puts você resumiu tudo em uma linha, estou me sentindo um idiota :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa aí....

 

function ColetorDeLixo(str) {
 return preg_match("/[aeiou]{3,}|[bcdfghjklmnpqrstvxzywç]{3,}/gi", str);
}

 

Se a função retornar true é porque a string passada tem lixo, se retornar false tá tudo ok!

 

 

Abraços a todos

 

PS: Editei a função as 16:36, deixei ela mais sensível. :)

 

Puts você resumiu tudo em uma linha, estou me sentindo um idiota :wacko:

 

é a magica das expressões regulares ..heheheheheheh

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa aí....

 

function ColetorDeLixo(str) {
 return preg_match("/[aeiou]{3,}|[bcdfghjklmnpqrstvxzywç]{3,}/gi", str);
}

 

Se a função retornar true é porque a string passada tem lixo, se retornar false tá tudo ok!

 

 

Abraços a todos

 

PS: Editei a função as 16:36, deixei ela mais sensível. :)

 

Puts você resumiu tudo em uma linha, estou me sentindo um idiota :wacko:

 

Bom, se for para detectar palavras sem sentido não serve a função, mas se for para detectar e-mails sem sentido até pode valer tirando 'ç', se bem que, meu e-mail é gnh07_rj@XXXXX.com.br e não é sem sentido pois existe,hehehe. Mesmo que tivesse um dicionário, um e-mail pode ser qualquer coisa, já uma palavra qualquer sem sentido é toda que não está no dicionário(em qualquer idioma) e nem em qualquer dialeto(gírias,etc em qualquer idioma).

 

Então fazer uma função que diga que uma palavra é sem sentido é ineficaz, eu diria que é impossível. Até mesmo o Google, quando não acha uma palavra em seu banco de dados sugere outra, que foi procurada mais vezes, ou seja, a que possui maior relevância.

 

Pense nisso.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se for para detectar palavras sem sentido não serve a função, mas se for para detectar e-mails sem sentido até pode valer tirando 'ç', se bem que, meu e-mail é gnh07_rj@XXXXX.com.br e não é sem sentido pois existe,hehehe. Mesmo que tivesse um dicionário, um e-mail pode ser qualquer coisa, já uma palavra qualquer sem sentido é toda que não está no dicionário(em qualquer idioma) e nem em qualquer dialeto(gírias,etc em qualquer idioma).

 

Então fazer uma função que diga que uma palavra é sem sentido é ineficaz, eu diria que é impossível. Até mesmo o Google, quando não acha uma palavra em seu banco de dados sugere outra, que foi procurada mais vezes, ou seja, a que possui maior relevância.

 

Pense nisso.

 

Abraço

me mostre em qual lingua que kkkkkkkkkkkkk faz sentido e eu aceito sua afirmação ...

 

claro que nao tem como verificar para todas as linguas, mas isso so pode ser aplicado em sites que serão especificos de um idioma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo que só para o nosso idioma não terá efeito. Faz o contrário, me mostre uma função que eu testo em 800 e-mails cadastrados de usuários, se funcionar meus parabéns.

 

Só dou uma dica, alguns usuários usam ainda e-mails do tempo em ficavam horas no bate-papo e tinham aqueles nicks bizarros, ou pior dê uma olhada no e-mail do pessoal do msn, cada coisa que aparece. Mês passado, veio um cara aqui na empresa fazer uma entrevista comigo, o e-mail do cara era longo e bizarro, não lembro mais qual era, mas não fazia sentido e o pior é que falou que só tinha aquele.

 

Mas só foi uma ideia!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para verificação de e-mail eu concordo que é impossivel já que podem sim haver e-mails com mais de 3 consoantes sequidas, mas para uma postagem por exemplo a função funciona perfeitamente para a lingua poruguesa, pois não existem mais de 3 consoantes ou vogais seguidas no português. Claro que deve-se considerar o caso do erro de digitação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.