Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;
}>
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".
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
?>
Consegui usando a mesma função. Obrigado.
Quanto a sua função creio que o code abaixo é mais simples.
Para chamar a função: