Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

a1click_mac

[ error ] retirar acentos - PHP

Recommended Posts

Galera, estou com um erro que não consigo resolver.

 

A programação resolve o problema de retirar todas as acentuações, porém esta com problema e sempre tem erros quando coloco-a...

 

 

- Já fiz de tudo aqui pessoal e nada do problema ser resolvido.

 

 

# CÓDIGO #



function RetirarAcentos($var) {

$var = strtolower($var);

$var = ereg_replace("[áàâãªÁÄÀÃÂ]","a",$var);
$var = ereg_replace("[éèêëÉËÈÊ]","e",$var);
$var = ereg_replace("[íïìîÍÏÌÎ]","i",$var);
$var = ereg_replace("[óòôõºÓÖÒÕÔ]","o",$var);
$var = ereg_replace("[úùûÚÜÙÛ]","u",$var);
$var = ereg_replace("[çÇ]","c",$var);

return $var;
}

echo RetirarAcentos('Agora eu sei que é um teste, não vou negóciar com vocês, pois ítens foram roubados e vamos caçar.');



 

 

# RETORNO #

// agora eu sei que ae um teste, naao vou negaociar com vocaas, pois aitens foram roubados e vamos caacar.

 

 

# RETORNO, QUE DEVERIA FAZER#

// agora eu sei que e um teste, nao vou negociar com voces, pois itens foram roubados e vamos cacar.

 

* Ele não ta fazendo direito, dando muitos erros, como posso resolver pessoal?

 

Alguém pode ajudar?

valeu! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

// 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);

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

$acentos = '';

foreach ($item AS $codigo) $acentos .= chr($codigo);

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

}

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já respondi alguém com essa função mas não consegui achar:

function remove_acentos($str) {
   // Separa o ascento da letra
   $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);

   // Remove tudo que não seja caractere alfabético ou espaço em branco
   $str = preg_replace("/[^[:alpha:]\s\.,]/i", "", $str);
   /* Se você quiser preservar outro caractere, basta colocá-lo antes do ']'
      Se quiser remover o espaço em branco, remova o '\s' antes de ']'
   */

   return $str;
}

function remove_caracteres_repetidos($str) {
   return preg_replace("/(.)\\1+/", "$1", $str);
}

$str = "agora eu sei que ae um teste, naao vou negaociar com vocaas, pois aitens foram roubados e vamos caacar.";

$str = remove_acentos($str);

$str = remove_caracteres_repetidos($str);

echo $str;

 

Saída:

agora eu sei que ae um teste, nao vou negaociar com vocas, pois aitens foram roubados e vamos cacar.

 

Não é ainda a saída que você quer, pois o que você precisa é de um corretor ortográfico, mas para fazer um é necessário uma biblioteca como ASPELL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.