Ir para conteúdo

POWERED BY:

Arquivado

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

ezequielg

Remover acento

Recommended Posts

Olá pessoal!

 

Estou usando o código abaixo para remover acentos do meu texto e funciona perfeitamente

 


		// Remove acentos sobre a string
		$string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string);
		$string = ereg_replace( "[áàâãäª]", "a", $string);
		$string = ereg_replace( "[ÉÈÊË]", "E", $string);
		$string = ereg_replace( "[éèêë]", "e", $string);
		$string = ereg_replace( "[ÍÌÎÏ]", "I", $string);
		$string = ereg_replace( "[íìîï]", "i", $string);
		$string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string);
		$string = ereg_replace( "[óòôõöº]", "o", $string);
		$string = ereg_replace( "[ÚÙÛÜ]", "U", $string);
		$string = ereg_replace( "[úùûü]", "u", $string);
		$string = str_replace( "Ç", "C", $string);
		$string = str_replace( "ç", "c", $string);
		
		// Remove acentos
		$string = str_replace( "´", "", $string );
		$string = str_replace( "`", "", $string );
		$string = str_replace( "~", "", $string );
		$string = str_replace( "^", "", $string );
		$string = str_replace( "¨", "", $string );

Decidi transformar este código em uma função e o código, dentro da função.

Até aí tudo bem.

Em seguida coloquei ele como INCLUDE e não funciona mais.

 

function remove_acentos( $string ) 
	{
		// Remove acentos sobre a string
		$string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string);
		$string = ereg_replace( "[áàâãäª]", "a", $string);
		$string = ereg_replace( "[ÉÈÊË]", "E", $string);
		$string = ereg_replace( "[éèêë]", "e", $string);
		$string = ereg_replace( "[ÍÌÎÏ]", "I", $string);
		$string = ereg_replace( "[íìîï]", "i", $string);
		$string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string);
		$string = ereg_replace( "[óòôõöº]", "o", $string);
		$string = ereg_replace( "[ÚÙÛÜ]", "U", $string);
		$string = ereg_replace( "[úùûü]", "u", $string);
		$string = str_replace( "Ç", "C", $string);
		$string = str_replace( "ç", "c", $string);
		
		// Remove acentos
		$string = str_replace( "´", "", $string );
		$string = str_replace( "`", "", $string );
		$string = str_replace( "~", "", $string );
		$string = str_replace( "^", "", $string );
		$string = str_replace( "¨", "", $string );
		
	return $string;
	}

 

		include("remove.php");

		// Texto com acentos
	$string		 = "Vestidinho preto é 1º lugar na lista de roupas mais importantes da história.";

	// Adaptando o titulo para a URL
	$string 	= remove_acentos($string);

	echo $string;

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca

return $string;

 

por

echo $string;

 

em seguida troca

$string = remove_acentos($string);

echo $string;

 

por

remove_acentos($string);

se ele fizer isso a nao vai perder a possibilidade de retorno e naum vai conseguir, se necessario, fazer analizes sobre a string ou armazenar no db...

 

ezequielg... mostra aew como você ta chamando o include...

posta aew tbm se tiver dando algum aviso de erro

 

abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado aos amigos Help, Dórian e Beraldo.

 

Help, não posso exibir direto a string e sim armazená-la pois vou precisar dela novamente.

Seguindo ao conselho do Dórian, segue abaixo os códigos.

 

remove.php

<?

	function remove_acentos( $string ) 
	{
		// Remove acentos sobre a string
		$string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string);
		$string = ereg_replace( "[áàâãäª]", "a", $string);
		$string = ereg_replace( "[ÉÈÊË]", "E", $string);
		$string = ereg_replace( "[éèêë]", "e", $string);
		$string = ereg_replace( "[ÍÌÎÏ]", "I", $string);
		$string = ereg_replace( "[íìîï]", "i", $string);
		$string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string);
		$string = ereg_replace( "[óòôõöº]", "o", $string);
		$string = ereg_replace( "[ÚÙÛÜ]", "U", $string);
		$string = ereg_replace( "[úùûü]", "u", $string);
		$string = str_replace( "Ç", "C", $string);
		$string = str_replace( "ç", "c", $string);
		
		// Remove acentos
		$string = str_replace( "´", "", $string );
		$string = str_replace( "`", "", $string );
		$string = str_replace( "~", "", $string );
		$string = str_replace( "^", "", $string );
		$string = str_replace( "¨", "", $string );
		
	return $string;
	}

?>

 

index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
	// Remove acentos
	include("remove.php");
	
	// String com acento
	$string = "áà éè ìí òó ùú ç";
	
	// Removendo os acentos da string
	$string = remove_acentos($string);
	
	// String sem acento
	echo $string;

?>
</body>
</html>

Com base nos códigos acima, temos este resultado.

 

String de entrada

áà éè ìí òó ùú ç

 

String de saída

áà éè ìí òó ùú ç

 

Nota-se que os acentos permanecem.

 

O que eu fico intrigado é que se eu pegar a função que está como include e colocar no arquivo index.php, vai funcionar normalmente.

Veja o exemplo abaixo, apenas juntei os dois códigos em um único arquivo.

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
	function remove_acentos( $string ) 
	{
		// Remove acentos sobre a string
		$string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string);
		$string = ereg_replace( "[áàâãäª]", "a", $string);
		$string = ereg_replace( "[ÉÈÊË]", "E", $string);
		$string = ereg_replace( "[éèêë]", "e", $string);
		$string = ereg_replace( "[ÍÌÎÏ]", "I", $string);
		$string = ereg_replace( "[íìîï]", "i", $string);
		$string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string);
		$string = ereg_replace( "[óòôõöº]", "o", $string);
		$string = ereg_replace( "[ÚÙÛÜ]", "U", $string);
		$string = ereg_replace( "[úùûü]", "u", $string);
		$string = str_replace( "Ç", "C", $string);
		$string = str_replace( "ç", "c", $string);
		
		// Remove acentos
		$string = str_replace( "´", "", $string );
		$string = str_replace( "`", "", $string );
		$string = str_replace( "~", "", $string );
		$string = str_replace( "^", "", $string );
		$string = str_replace( "¨", "", $string );
		
	return $string;
	}
	
	// String com acento
	$string = "áà éè ìí òó ùú ç";
	
	// Removendo os acentos da string
	$string = remove_acentos($string);
	
	// String sem acento
	echo $string;

?>
</body>
</html>

Com base na unificação dos códigos, temos este exemplo

 

String de entrada

áà éè ìí òó ùú ç

 

String de saída

aa ee ii oo uu c

 

Nota-se que os acentos foram removidos.

 

Não entendo o que acontece.

Até o momento isto está muito sinistro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

index.php e remover.php estão no mesmo diretório?

Troque include() por require(). Assim, se houver problemas para encontrar o arquivo, a execução será encerrada.

 

Também coloque isto no topo da index.php:

PHP
ini_set('display_errors', 1);

error_reporting(E_ALL);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, os arquivos estão sim no mesmo diretório.

Troquei o include() por require() e acrescentei as linhas que você sugeriu.

 

Não deu nenhum erro, porém a acentuação permanece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, não consegui resolver o problema ainda, na verdade, não vejo problema algum, porém a função não funciona quando chamado em um include().

 

Se alguém tiver uma solução dá um toque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um problema um tanto estranho tbm ...

 

Pego uma variavel via $_GET, e por sinal e convertida como se fosse atraves da funcao urlencode();

 

Por exemplo, ao enviar a variavel keyword com o valor igual a kátia, tenho na url

 

http://www....&keyword=k%C3%A1tia

 

 

Até ai tudo bem !

 

depois de recuperar essa varivel em um arquivo php, eu tenho remover os acentos dela, pra que fique 'katia'. Uso a funcao que tem nesse tópico mas o resultado é 'kAatia', percebi que ele poe um A ( A maiusculo ) antes de qualquer acento.

 

Alguem já passou por isso ?

 

[]´s

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.