Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, amigos:
Tenho essa dificuldades. Se puderem ajudar, agradeço.
Como fazer para filtrar a palavra LOUCO, no exemplo, em um título com várias palavras?
Só está funcionando, se o usuário publicar somente a palavra LOUCO. Se ele escrever, por exemplo, ELE É LOUCO, o filtro não pega nada.
Também gostaria de incluir várias palavras proibidas - e não somente uma.
<?php
if(isset($_POST['Enviar'])){
$titulo = $_POST['titulo'];
if($titulo == "louco"){
echo "<script>alert('Não pode ter palavrões')</script>";
echo "<script>history.go(-1);</script>";
exit;
}
.
.
. //segue o código.
?>
Olá.
Eu tinha feito uma função destas há um tempo atrás. Se você quiser, está prontinha aí:
/**
* Verifica e retira palavrões de strings
* e campos de texto
* @return String
*/
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',
'buceta',
'boceta',
'bocetao',
'bucetinha',
'bucetao',
'bucetaum',
'blowjob',
'#@?$%~',
'caralinho',
'caralhao',
'caralhaum',
'caralhex',
'c*',
'cacete',
'cacetinho',
'cacetao',
'cacetaum',
'epenis',
'foder',
'f****',
'fodase',
'fodasi',
'fodassi',
'fodassa',
'fodinha',
'fodao',
'fodaum',
'foda1',
'fodona',
'f***',
'fodeu',
'fodasse',
'fuckoff',
'fuckyou',
'fuck',
'filhodaputa',
'filhadaputa',
'gozo',
'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****',
'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;
}
}>
Você poderia utilizar preg_match
<?php
$texto = 'Um texto muito LouCO para testar';
$palavras = array(
'louco',
'besta',
'idiota'
);
if( preg_match( sprintf( '/%s/i', implode( '|', $palavras ) ), $texto ) )
{
echo 'Titulo possui palavra(s) proibida(s)';
}
Fiz, como abaixo, mas não filtrou...
$titulo = $_POST['titulo'];
$palavras = array(
'louco',
'besta',
'idiota'
);
if( preg_match( sprintf( '/%s/i', implode( '|', $palavras ) ), $titulo ) )
{
echo 'Titulo possui palavra(s) proibida(s)';
}Qual o titulo que você testou?
Adicionou os outros palavrões proibidos no array?
Verificou se a variável $titulo recebeu o valor correto?
echo $titulo;
>
Qual o titulo que você testou?
Adicionou os outros palavrões proibidos no array?
Verificou se a variável $titulo recebeu o valor correto?
echo $titulo;
>
Publiquei: Um dia de louco
Gravou inteiro no banco de dados.
Onde errei?
>
Olá.
Eu tinha feito uma função destas há um tempo atrás. Se você quiser, está prontinha aí:
/**
* Verifica e retira palavrões de strings
* e campos de texto
* @return String
*/
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',
'buceta',
'boceta',
'bocetao',
'bucetinha',
'bucetao',
'bucetaum',
'blowjob',
'#@?$%~',
'caralinho',
'caralhao',
'caralhaum',
'caralhex',
'c*',
'cacete',
'cacetinho',
'cacetao',
'cacetaum',
'epenis',
'foder',
'f****',
'fodase',
'fodasi',
'fodassi',
'fodassa',
'fodinha',
'fodao',
'fodaum',
'foda1',
'fodona',
'f***',
'fodeu',
'fodasse',
'fuckoff',
'fuckyou',
'fuck',
'filhodaputa',
'filhadaputa',
'gozo',
'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****',
'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;
}
}
>
Como sou iniciante em PHP, não consegui entender onde especifico que o filtro deve ser aplicado ao título do texto publicado. Poderia me responder?
Aproveitando a lista de palavroes do Guilherme #3, pode fazer um replace para os palavroes algo assim
$msg = "O google plus veio pra f**** com o facebook, mas o mark mandou para #@?$%~,...o google ficou puto da cara";
$array = array('arrombado',
'arrombada',
'buceta',
'boceta',
'bocetao',
'bucetinha',
'bucetao',
'bucetaum',
'blowjob',
'#@?$%~',
'caralinho',
'caralhao',
'caralhaum',
'caralhex',
'c*',
'cacete',
'cacetinho',
'cacetao',
'cacetaum',
'epenis',
'foder',
'f****',
'fodase',
'fodasi',
'fodassi',
'fodassa',
'fodinha',
'fodao',
'fodaum',
'foda1',
'fodona',
'f***',
'fodeu',
'f****',
'fudeu',
'fodasse',
'fuckoff',
'fuckyou',
'fuck',
'filhodaputa',
'filhadaputa',
'gozo',
'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****',
'porraloca',
'porraloka',
'porranacara',
'#@?$%~',
'putinha',
'putona',
'putassa',
'putao',
'punheta',
'putamerda',
'putaquepariu',
'putaquemepariu',
'#@?$%~',
'putavadia',
'puto',
'pqp',
'putaqpariu',
'putaqpario',
'putaqparil',
'peido',
'peidar',
'xoxota',
'xota',
'xoxotinha',
'xoxotona'
);
for($n=0;$n<count($array);$n++)
{
$msg=str_replace($array[$n], "[CENSURADO]", $msg);
}
echo $msg;Você tem a função adicionada, certo?
Então você faz o seguinte na string que quer filtrar o palavrão:
if(verificaPalavroes($palavra) == true){
// execute sua ação
}
>
Você tem a função adicionada, certo?
Então você faz o seguinte na string que quer filtrar o palavrão:
if(verificaPalavroes($palavra) == true){
// execute sua ação
}
>
DEU CERTO, Guilherme!
Agradeço a você, ao Coelho e ao Loko!
De nada, MuitoCurioso.
Até mais!
Você poderia utilizar preg_match
$palavras = array(
'louco',
'besta',
'idiota'
);
if( preg_match( sprintf( '/%s/i', implode( '|', $palavras ) ), $texto ) )
{