Jump to content
Thiago Moraes

Função para remover acentos

Recommended Posts

Eu tenho uma função que tira acentos das letras, como eu faço para passar a variavel que eu quero editar na hora de chamar a função?

function removeAcentos() {

	$conv = array('á'=>'a','à'=>'a','ã'=>'a','â'=>'a','é'=>'e','ê'=>'e','í'=>'i','ó'=>'o','ô'=>'o','õ'=>'o','ú'=>'u','ü'=>'u','ç'=>'c','Á'=>'A','À'=>'A','Ã'=>'A','Â'=>'A','É'=>'E','Ê'=>'E','Í'=>'I','Ó'=>'O','Ô'=>'O','Õ'=>'O','Ú'=>'U','Ü'=>'U','Ç'=>'C');

	$text = '';
	$text .= strtr($text, $conv);
	
	return $text;

}

Share this post


Link to post
Share on other sites

Quanto a sua função creio que o code abaixo é mais simples.

function removeAcentos($suaString) {
  
  $string = iconv('UTF-8', 'ASCII//TRANSLIT', $suaString);
   return $string;
}

Para chamar a função:

$string = 'São páulo';
echo removeAcentos($string);
  • +1 1

Share this post


Link to post
Share on other sites

 

Quanto a sua função creio que o code abaixo é mais simples.

function removeAcentos($suaString) {
  
  $string = iconv('UTF-8', 'ASCII//TRANSLIT', $suaString);
   return $string;
}

Para chamar a função:

$string = 'São páulo';
echo removeAcentos($string);

 

 

Obrigado, mas usando essa função que passou salvou errado no banco, ficou "administrac~ao" ao invés de "administracao".

Share this post


Link to post
Share on other sites


function removeAcentos($string, $slug = false)

{

//Setamos o localidade

setlocale(LC_ALL, 'pt_BR');

//Verificamos se a string é UTF-8

#if(is_utf8($string))

#$string = utf8_decode($string);

//Se a flag 'slug' for verdadeira, transformamos o texto para lowercase

if($slug)

$string = strtolower($string);

// Código ASCII das vogais

$ascii['a'] = range(224, 230);

$ascii['e'] = range(232, 235);

$ascii['i'] = range(236, 239);

$ascii['o'] = array_merge(range(242, 246), array(240, 248));

$ascii['u'] = range(249, 252);

// Código ASCII dos outros caracteres

$ascii['b'] = array(223);

$ascii['c'] = array(231);

$ascii['d'] = array(208);

$ascii['n'] = array(241);

$ascii['y'] = array(253, 255);

//Fazemos um loop para criar as regras de troca dos caracteres acentuados

foreach ($ascii as $key => $item) {

$acentos = '';

foreach ($item AS $codigo)

$acentos .= chr($codigo);

$troca[$key] = '/[' . $acentos . ']/i';

}

//Aplicamos o replace com expressao regular

$string = preg_replace(array_values($troca), array_keys($troca), $string);

//Se a flag 'slug' for verdadeira...

if ($slug) {

//Troca tudo que não for letra ou número por um caractere ($slug)

$string = preg_replace('/[^a-z0-9]/i', $slug, $string);

//Tira os caracteres ($slug) repetidos

$string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);

$string = trim($string, $slug);

}

return trim($string);

}

 

 

print removeAcentos('São Paulo'); //modo 1

print removeAcentos('São Paulo','-'); // modo 2

?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.