Ir para conteúdo

POWERED BY:

Arquivado

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

Matheus Weber

Bloquear palavrões

Recommended Posts

function verificaPalavroes($string) {
#Declaramos as palavras bloqueadas a serem verificadas
$palavroes = array('palavrao1', 'palavrao2');

$palavroes1=0;
$msg = explode(' ', $string);
$cont = count($msg);
$cont1 = count($palavroes);
for($i=0;$i<$cont;$i++){
	for($j=0;$j<$cont1;$j++){

		if(strcasecmp($msg[$i],$palavroes[$j])==0){
			 $palavroes1++;

		}

	}
}
return $palavroes1;
}

 

Fiz uma função pra encontrar e retornar o numero de palavroes em uma frase, mas não quer funcionar, alguém sabe por que?

 

Eu notei que a função em si funciona, mas não quando o texto vem de um formulário, alguém sabe o por que disso?

 

Testei passando a variavel string já com um valor, e não recebendo pro post.

 

Tirei os palavrões da função pq não sei se eras postar aqui hehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah ai uma função criada por mim, brother...

espero que ajude...

 

 

public static function VerificaPalavroes($string)
{
	// Retira espaços, hífens e pontuações da String
	$arrayRemover = array('.','-',' ');
	$arrayNormal = array("","","");
	$normal = str_replace($arrayRemover, $arrayNormal, $string);

	// Remove os acentos da string
	$de = 'àáãâéêíóõôúüç';
	$para   = 'aaaaeeiooouuc';
	$string_final = strtr(strtolower($normal), $de, $para);

	// Array em Filtro de Palavrões
	$array = array(
		'arrombado',
		'arrombada',
		'arombado',
		'arombada',
		'buceta',
		'boceta',
		'bucetao',
		'bocetao',
		'bucetaum',
		'bocetaum',
		'bucetinha',
		'bocetinha',
		'blowjob',
		'#@?$%~',
		'caralinho',
		'caralhao',
		'caralhaum',
		'caralhex',
		'cacete',
		'cacetinho',
		'cacetao',
		'cacetaum',
		'epenis',
		'ehpenis',
		'penis',
		'pênis',
		'c*',
		'c*',
		'c*',
		'cuzinho',
		'cúzinho',
		'cuzão',
		'cúzao',
		'cuzudo',
		'cúzudo',
		'cusinho',
		'cúsinho',
		'cúsão',
		'cusão',
		'cúsao',
		'cusao',
		'cusudo',
		'cúsudo',
		'foder',
		'f****',
		'fodase',
		'f***-se',
		'fodasse',
		'f***-sse',
		'fodasi',
		'f***-si',
		'fodassi',
		'f***-ssi',
		'fodassa',
		'f***ça',
		'fodinha',
		'fodao',
		'fodaum',
		'f***',
		'fodona',
		'f***',
		'foder',
		'f****',
		'fodeu',
		'fuckoff',
		'fuckyou',
		'fuck',
		'filhodaputa',
		'filho-da-#@?$%~',
		'fdp',
		'filhadaputa',
		'filha-da-#@?$%~',
		'filho de uma egua',
		'filho de uma égua',
		'filho-de-uma-egua',
		'filho-de-uma-égua',
		'filhodeumaegua',
		'filhodeumaégua',
		'filha de uma egua',
		'filha de uma égua',
		'filha-de-uma-egua',
		'filha-de-uma-égua',
		'filhadeumaegua',
		'filhadeumaégua',
		'gozo',
		'goza',
		'gozar',
		'gozada',
		'gozadanacara',
		'm*****',
		'merdao',
		'merdaum',
		'merdinha',
		'vadia',
		'vasefoder',
		'venhasefoder',
		'voufoder',
		'vasefuder',
		'venhasefuder',
		'voufuder',
		'vaisefoder',
		'vaisefuder',
		'venhasefuder',
		'vaisifude',
		'v****',
		'vaisifuder',
		'vasifuder',
		'vasefuder',
		'vasefoder',
		'pirigueti',
		'piriguete',
		'p****',
		'p****',
		'porraloca',
		'porraloka',
		'porranacara',
		'#@?$%~',
		'putinha',
		'putona',
		'putassa',
		'putao',
		'punheta',
		'putamerda',
		'putaquepariu',
		'putaquemepariu',
		'putaquetepariu',
		'putavadia',
		'pqp',
		'putaqpariu',
		'putaqpario',
		'putaqparil',
		'peido',
		'peidar',
		'xoxota',
		'xota',
		'xoxotinha',
		'xoxotona'
	);

	if(in_array($string_final, $array))
	{
		return true;
	}
	else
	{
		return false;
	}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ri demais dos palavrões pakoskopsa

 

Mas não funcionou, ele deu parse error no public static e quando eu tirei continuou não achando.

 

Retorna sempre false =/

 

Edit:

 

Foi mal, testei com um que não tinha huahuahua

 

Funcionou sim :D

 

Obrigado.

 

Só que eu ainda não entendi porque o meu não funcionou hehe.

 

Edit 2:

Na verdade, o teu não funciona muito bem hehe

 

Se eu mando uma mensagem "tu és um puto" ele não pega.

 

Só o puto ele pega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo dele, funciona somente para caso a frase toda seja a palavra em si. Não está verificando uma palanvra dentro de uma sentença, apenas sentenças inteiras.

 

O que você pode fazer é mudar essa parte:

if(in_array($string_final, $array))
{
   return true;
}
else
{
   return false;
}

 

Para isso:

foreach($array AS $palavrao) {
  if(strpos($string_final , $palavrao) === true){
     return true;
  }
}
return false;

Olhando por cima, seria uma solução dentro do código já existente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Luis Paullo comentou algo que é bastante utilizado. Ao invés de "bloquear", os sistemas podem substituir certas palavras por XX.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como, como você disse que quer contar (e possivelmente mostrar), você pode compilar sua lista de palvrões em (uma|lista|de|valores) e casar com um preg_match_all():

 

$text = 'Uma frase qualquer com palavrões: palavrao_1, palavrao_2, palavrao_3 e o palavrao_2misturado com outro texto';

$badwords = array( 'palavrao_1', 'palavrao_2', 'palavrao_3' );

preg_match_all( sprintf( '/(%s)/', implode( '|', $badwords ) ), $text, $matches );

var_dump( $matches[ 1 ] );

Se ao contar os elementos dessa variável resultar em zero, você passa a mensagem. Caso contrário você barra e ainda pode mostrar quais foram os palavrões encontrados:

 

printf(

   "<ul>\n    <li>%s</li>\n</ul>",

   implode( "</li>\n    <li>", $matches[ 1 ] )
);

 

E considerando os comentários acima pode ainda mascarar os palavrões se quiser ser camarada com quem não tem papas na língua:

 

$text = preg_replace(

   sprintf( '/(%s)/', implode( '|', $badwords ) ), 'xxxxxx', $text
);

var_dump( $text );

Saída:

 

Uma frase qualquer com palavrões: xxxxxx, xxxxxx, xxxxxx e o xxxxxxmisturado com outro texto

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem criativo o array, não???...rsrsrsrs

 

mas para funcionar você tem q dar um explode na frase por espaço e chamar essa função dentro fo foreach, tendeu???

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas para funcionar você tem q dar um explode na frase por espaço e chamar essa função dentro fo foreach, tendeu???

Não necessariamente. Olha meu exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta adicionar \bbordas\b na ER:

 

$text = preg_replace(

   sprintf( '/\b(%s)\b/', implode( '|', $badwords ) ), 'xxxxxx', $text
);

Assim só casa combinações inteiras e não parciais.

 

Mas veja o que acontece com palavrao_2, que está "camuflado" em outra palavra. Ele passa.

 

Acertar TODAS vezes não é impossível, mas é impraticávl.

 

Lembro de uma vez uma matéria que saiu na Revista INFO anos atrás dizendo que só para filtrar a palavra VIAGRA, um filtro anti-spam tinha de considerar mais de 1 bilhão de combinações informaticamente possíveis.

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.