Script para remover acentos e caracteres especiais

1. Script para remover acentos e caracteres especiais

Alysson
AlyssonAlmeida

(usa Ubuntu)

Enviado em 08/06/2023 - 20:52h

Tenho essa função em uma aplicação so que ela não funciona algum pode disser onde esta o error?

###################################

<?php
require_once('seguranca.php');

// ======================================
// Script para remover acentos e caracteres especiais
// ======================================

function Pinga($IP,$PORTA){
$IPAddress = $IP;
$Port = $PORTA;
$fp=@fsockopen ($IPAddress,$Port, $errno, $errstr,(float)0.5);
if(!$fp) {
return 1;
}
else {
return 0;
fclose($fp);
}
}

function tempo_corrido($time) {

$now = strtotime(date("Y-m-d H:i:s"));
$time = strtotime($time);
$diff = $now - $time;

$seconds = $diff;
$minutes = round($diff / 60);
$hours = round($diff / 3600);
$days = round($diff / 86400);
$weeks = round($diff / 604800);
$months = round($diff / 2419200);
$years = round($diff / 29030400);

if ($seconds <= 60) return $seconds==1 ?'1 seg ':$seconds.' seg ';
else if ($minutes <= 60) return $minutes==1 ?'1 min ':$minutes.' min ';
else if ($hours <= 24) return $hours==1 ?'1 hrs ':$hours.' hrs ';
else if ($days <= 7) return $days==1 ?'1 dia atrás':$days.' dias ';
else if ($weeks <= 4) return $weeks==1 ?'1 semana ':$weeks.' semanas ';
else if ($months <= 12) return $months == 1 ?'1 mês ':$months.' meses ';
else return $years == 1 ? 'um ano ':$years.' anos ';
}

function tempo_final($time, $time_f) {

$now = strtotime($time_f);
$time = strtotime($time);
$diff = $now - $time;

$seconds = $diff;
$minutes = round($diff / 60);
$hours = round($diff / 3600);
$days = round($diff / 86400);
$weeks = round($diff / 604800);
$months = round($diff / 2419200);
$years = round($diff / 29030400);

if ($seconds <= 60) return $seconds==1 ?'1 seg ':$seconds.' seg ';
else if ($minutes <= 60) return $minutes==1 ?'1 min ':$minutes.' min ';
else if ($hours <= 24) return $hours==1 ?'1 hrs ':$hours.' hrs ';
else if ($days <= 7) return $days==1 ?'1 dia atrás':$days.' dias ';
else if ($weeks <= 4) return $weeks==1 ?'1 semana ':$weeks.' semanas ';
else if ($months <= 12) return $months == 1 ?'1 mês ':$months.' meses ';
else return $years == 1 ? 'um ano ':$years.' anos ';
}


function removerEspeciais($palavra){

$palavra = preg_replace("[^a-zA-Z0-9_]", "", strtr($palavra, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
$palavra = anti_sql_injection($palavra);

return $palavra;
}

// ======================================
// Script para remover acentos e caracteres especiais
// ======================================

function validarNumero($palavra){

return (is_numeric($palavra)) ? $var=0 : $var =1 ;

}


// ======================================
// Anti SQL Injector
// ======================================

function anti_sql_injection($sql)
{
$seg = preg_replace(my_Sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); //remove palavras que contenham a sintaxe sql
$seg = trim($seg); //limpa espaços vazios
$seg = strip_tags($seg); // tira tags html e php
$seg = addslashes($seg); //adiciona barras invertidas a uma string
return $seg;
}


// ======================================
// Recuperar o ID do Usuário logado
// ======================================

function getIDUsuario(){


$session = empty($_SESSION['usuarioID']) ? 0 : $_SESSION['usuarioID'];

return $session;
}

// ======================================
// Recuperar o ID do Usuário logado
// ======================================

function getUsuario($id){

$SQLUsuario = "SELECT * FROM usuario WHERE id_usuario = '".$id."'";
$SQLUsuario = $conn->prepare($SQLUsuario);
$SQLUsuario->execute();
$usuario = $SQLUsuario->fetch();

return $usuario;
}
?>


  


2. Re: Script para remover acentos e caracteres especiais

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 08/06/2023 - 20:52h

Olá! No seu código, parece haver um problema na função `preg_replace`. A expressão regular está incorreta. Tente substituir a linha do `preg_replace` pela seguinte:

```
$palavra = preg_replace('/[^a-zA-Z0-9_]/', '', strtr($palavra, 'áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ', 'aaaaeeiooouucAAAAEEIOOOUUC'));
```

Portanto, sua função `removerEspeciais` deve ficar assim:

```php
function removerEspeciais($palavra){
$palavra = preg_replace('/[^a-zA-Z0-9_]/', '', strtr($palavra, 'áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ', 'aaaaeeiooouucAAAAEEIOOOUUC'));
$palavra = anti_sql_injection($palavra);

return $palavra;
}
```

Lembre-se de que para executar a função `anti_sql_injection`, ela precisa estar declarada no seu código (pode ser que você já tenha feito isso, mas só para garantir). Espero que isso resolva o problema! Se precisar de mais ajuda, pode contar conos


3. postei a pagina funções toda pra vc ver se procede com sua resposta

Alysson
AlyssonAlmeida

(usa Ubuntu)

Enviado em 08/06/2023 - 20:59h

postei a pagina funções toda pra vc ver se procede com sua resposta

outra duvida amigo na sua correção não vi o "_ anderlaine" o "*" e o "espaço" inserido no codigo e estes são os maiores viloes aqui pois pessoal criou moda de colocar nos logins e senhas

Quero que so passa ser criado digitado nos campos usuario e senha que so seja permitido letras minusculas, maiusculas e numeros


4. Remoção de acentos x palavras especiais

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 09/06/2023 - 19:37h

Isso funciona para mim ( Acentos )


echo "FUNFÃO DIVERSÃO áCENTÔ" | iconv -f UTF-8 -t ASCII//TRANSLIT


Isso funciona para mim ( caracteres especiais )
echo 'eram caracteres especiais $@!(#)@!#(' | sed -r 's/[[:punct:]]+//g'











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts