Filtro de palavrões em PHP

Escrito por steve mcdonnell Google | Traduzido por fernando telles
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Filtro de palavrões em PHP
Você pode substituir palavrões por outros símbolos usando PHP (Hemera Technologies/AbleStock.com/Getty Images)

PHP é uma linguagem de script que processa os dados de entrada e cria uma saída HTML para os usuários, por isso faz sentido usá-la na criação de um filtro de "palavrões". Esse processo é bastante simples. É necessário estabelecer uma lista com palavrões, separar o conteúdo a ser filtrado em palavras, comparar cada palavra com aquelas presentes na lista e, então, remover ou substituir cada combinação por qualquer outra coisa. A parte mais desafiadora na criação desse filtro em PHP é a escolha da estrutura de dados correta e um algoritmo, de modo que seu código seja executado da maneira mais rápida e eficiente possível.

Outras pessoas estão lendo

Crie uma lista de palavrões

Crie uma lista de palavrões que inclua todas as palavras que você não quer que apareçam na tela. Digite cada uma em um arquivo de dados, uma palavra por linha. Decida pelo que você gostaria de substituir esses palavrões, por exemplo "*" ou "<removido>" ou "--------". Coloque a substituição em uma variável a ser utilizada posteriormente, quando a filtragem for feita. Por exemplo:

<?php $substituto = "-----";

Guarde a lista de palavrões em um array

Leia a lista de palavrões do disco e armazene-a em uma estrutura de dados. Você pode considerar criar um array e armazenar cada palavra como um elemento, tal como:

$palavrão[0] = "essepalavrão"; $palavrão[1] = "esse palavrão";

Apesar de funcionar, esse tipo de estrutura é ineficiente porque percorre todo o array em busca do palavrão para fazer a comparação de cada palavra que você checa com a lista. Uma forma mais viável de realizar essa tarefa é por meio de uma tabela hash. Para isso, crie um array associativo e armazene cada palavrão como uma chave de array. Atribua a ela qualquer valor, como "1" ou "verdadeiro". Para determinar se uma palavra está na lista, basta apenas referencie a chave de array em vez de percorrer o array inteiro. Por exemplo:

$palavroes = array(); $fp = fopen("arquivopalavrões.txt", "r") or die("Não foi possível abrir o arquivo com os palavrões!"); while ($palavra = fgets($fp)) { $palavroes[$palavra] = 1; }

Obtenha o conteúdo para filtrar

Recupere o conteúdo que você deseja filtrar. Ele pode ser comentários enviados por um usuário em um formulário HTML, um documento no disco ou até mesmo uma página da internet. Armazene esse conteúdo em uma única variável. Por exemplo:

$to_do = file_get_contents("http://letrasdemusicacompalavroes.com.br");

Extraia palavras do conteúdo

Quebre o conteúdo não filtrado em palavras, separando-as nos espaços que as dividem. Use a função "explode" do PHP para converter a string não filtrada em um array de palavras que podem ser filtradas individualmente. Por exemplo:

$palavras_para_filtrar = explode(" ", $to_do);

Filtre os palavrões

Percorra o conjunto de palavras no array e compare cada uma com aquelas presentes no array contendo a lista de "palavrões". Se você verificar o array para ver se o seu valor é 1, um erro será gerado sempre que uma palavra que não estiver contida na lista for acessada, já que o índice do array não existe. Em vez disso, use a função "isset" para determinar se a palavra está presente. Caso haja uma correspondência, troque a palavra em questão pela substituição escolhida. Por exemplo:

foreach($palavras_para_filtrar as $palavra=>$marcar) { if (isset($palavroes[$palavra])) { $palavra = $substituto; } }

Remonte o texto

Coloque o texto de volta em uma única variável com a função "implode" — oposto de "explode". Ela pega cada valor do array e junta-o com os caracteres que você designar; neste caso, é um espaço. Exiba os resultados dos conteúdos filtrados na tela. Por exemplo:

$filtrados = implode(" ", $palavras_para_filtrar); echo $filtrados; ?>

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível