Atualizado em 23 de Setembro de 2013

Remover Acentos com PHP

Olá pessoal,

Quem nunca teve problemas ao tentar retirar acentos de uma string que atire a primeira pedra!!! É por este motivo que neste post vou mostrar uma forma de como retirar acentos de uma string qualquer.

No exemplo vamos criar dois Arrays, um com todos os acentos e um com as letras sem acentos (ou símbolos, dependendo da sua aplicação), após isso basta usarmos o comando str_replace para remover o acento.

Vamos ver um exemplo:

<?php
$comAcentos = array('à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ü', 'ú', 'ÿ', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'O', 'Ù', 'Ü', 'Ú');

$semAcentos = array('a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'y', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', '0', 'U', 'U', 'U');

$stringExemplo = 'É vamos retirar a acentuação.';

echo str_replace($comAcentos, $semAcentos, $stringExemplo);
//Resultado: E vamos retirar a acentuacao.
?>

Caso falte algum acento basta acrescentá-lo aos dois arrays, só lembrando que deve ser na mesma posição (índice).

Outra informação importante é que no inicio deste post eu disse que esta é apenas uma das formar de fazer a remoção do acento é claro que existem outra e com técnicas diferentes.


Curta a nossa página



E isso aí pessoal, até a próxima.

Tags:  Arrays | Funções | PHP

Comentários

Sua foto do perfil

Bonfim Junior

Olá Mauricio.

Estou tentando adaptar o seu script, para cadastrar slugs para minha url amigavel.
Tenho um formulário de cadastro php. Quando o usuário digitar e enviar o titulo ele cadastra-se o campo slugs do BD a partir do titulo sem acentos e espaços. Entende?

Tentei seguir esse exemplo mas não obtive sucesso.
http://www.downsmaster.com/php/pedido-url-amigavel-por-banco-de-dados

CODIGO COMPLETO DO MEU FORMULÁRIO DE ENVIU:

<?php require_once('Connections/musicnotstop.php'); ?>
<?php
// Load the common classes
require_once('includes/common/KT_common.php');

// Load the tNG classes
require_once('includes/tng/tNG.inc.php');

// Make a transaction dispatcher instance
$tNGs = new tNG_dispatcher("");

// Make unified connection variable
$conn_musicnotstop = new KT_connection($musicnotstop, $database_musicnotstop);

// Start trigger
$formValidation = new tNG_FormValidation();
$formValidation->addField("id_user", true, "text", "", "", "", "");
$formValidation->addField("titulo", true, "text", "", "", "", "digite o titulo!");
$formValidation->addField("local", true, "text", "", "", "", "digite o local onde o show foi gravado cidade ou clube!");
$formValidation->addField("data_show", true, "date", "date", "", "", "digite a data: exemplo: 01/12/2050");
$formValidation->addField("categoria", true, "text", "", "", "", "Escolha o estilo.");
$formValidation->addField("musicas", true, "", "", "", "", "selecione uma imagem da banda!");
$tNGs->prepareValidation($formValidation);
// End trigger

//start Trigger_ImageUpload trigger
//remove this line if you want to edit the code by hand
function Trigger_ImageUpload(&$tNG) {
$uploadObj = new tNG_ImageUpload($tNG);
$uploadObj->setFormFieldName("musicas");
$uploadObj->setDbFieldName("musicas");
$uploadObj->setFolder("musicas/");
$uploadObj->setResize("true", 172, 172);
$uploadObj->setMaxSize(100000);
$uploadObj->setAllowedExtensions("jpg, png, jpeg");
$uploadObj->setRename("auto");
return $uploadObj->Execute();
}
//end Trigger_ImageUpload trigger



mysql_select_db($database_musicnotstop, $musicnotstop);
$query_categoria = "SELECT * FROM categorias ORDER BY id_categoria ASC";
$categoria = mysql_query($query_categoria, $musicnotstop) or die(mysql_error());
$row_categoria = mysql_fetch_assoc($categoria);
$totalRows_categoria = mysql_num_rows($categoria);

// Make an insert transaction instance
$ins_shows = new tNG_insert($conn_musicnotstop);
$tNGs->addTransaction($ins_shows);
// Register triggers
$ins_shows->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Insert1");
$ins_shows->registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, $formValidation);
$ins_shows->registerTrigger("END", "Trigger_Default_Redirect", 99, "enviar/index.php?id_show={id_show}");
$ins_shows->registerTrigger("AFTER", "Trigger_ImageUpload", 97);
// Add columns
$ins_shows->setTable("shows");
$ins_shows->addColumn("id_user", "STRING_TYPE", "POST", "id_user", "{SESSION.kt_login_id}");
$ins_shows->addColumn("titulo", "STRING_TYPE", "POST", "titulo");
$ins_shows->addColumn("local", "STRING_TYPE", "POST", "local");
$ins_shows->addColumn("data_show", "DATE_TYPE", "POST", "data_show");
$ins_shows->addColumn("categoria", "STRING_TYPE", "POST", "categoria");
$ins_shows->addColumn("musicas", "FILE_TYPE", "FILES", "musicas");
$ins_shows->setPrimaryKey("id_show", "NUMERIC_TYPE");

// Execute all the registered transactions
$tNGs->executeTransactions();

// Get the transaction recordset
$rsshows = $tNGs->getRecordset("shows");
$row_rsshows = mysql_fetch_assoc($rsshows);
$totalRows_rsshows = mysql_num_rows($rsshows);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<link href="includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" />
<script src="includes/common/js/base.js" type="text/javascript"></script>
<script src="includes/common/js/utility.js" type="text/javascript"></script>
<script src="includes/skins/style.js" type="text/javascript"></script>
<?php echo $tNGs->displayValidationRules();?>
</head>

<body>
<p>&nbsp;</p>
<p><strong>ENVIAR NOVO SHOW </strong></p>
<p>&nbsp;</p>
<form method="post" id="form1" action="<?php echo KT_escapeAttribute(KT_getFullUri()); ?>" enctype="multipart/form-data">
<table cellpadding="2" cellspacing="0" class="KT_tngtable">
<tr>
<td class="KT_th"><label for="titulo">Titulo:</label></td>
<td><input type="text" name="titulo" id="titulo" value="<?php echo KT_escapeAttribute($row_rsshows['titulo']); ?>" size="32" />
<?php echo $tNGs->displayFieldHint("titulo");?> <?php echo $tNGs->displayFieldError("shows", "titulo"); ?> </td>
</tr>
<tr>
<td class="KT_th">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="KT_th"><label for="local">Local:</label></td>
<td><input type="text" name="local" id="local" value="<?php echo KT_escapeAttribute($row_rsshows['local']); ?>" size="32" />
<?php echo $tNGs->displayFieldHint("local");?> <?php echo $tNGs->displayFieldError("shows", "local"); ?> </td>
</tr>
<tr>
<td class="KT_th">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="KT_th"><label for="data_show">Data da grava&ccedil;&atilde;o:</label></td>
<td><input type="text" name="data_show" id="data_show" value="<?php echo KT_formatDate($row_rsshows['data_show']); ?>" size="32" />
<?php echo $tNGs->displayFieldHint("data_show");?> <?php echo $tNGs->displayFieldError("shows", "data_show"); ?> </td>
</tr>
<tr>
<td class="KT_th">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="KT_th"><label for="categoria">Categoria:</label></td>
<td><select name="categoria" id="categoria">
<?php
do {
?>
<option value="<?php echo $row_categoria['id_categoria']?>"<?php if (!(strcmp($row_categoria['id_categoria'], $row_rsshows['categoria']))) {echo "SELECTED";} ?>><?php echo $row_categoria['estilo']?></option>
<?php
} while ($row_categoria = mysql_fetch_assoc($categoria));
$rows = mysql_num_rows($categoria);
if($rows > 0) {
mysql_data_seek($categoria, 0);
$row_categoria = mysql_fetch_assoc($categoria);
}
?>
</select>
<?php echo $tNGs->displayFieldError("shows", "categoria"); ?> </td>
</tr>
<tr>
<td class="KT_th">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="KT_th"><label for="musicas">Musicas:</label></td>
<td><input type="file" name="musicas" id="musicas" size="32" />
<?php echo $tNGs->displayFieldError("shows", "musicas"); ?> </td>
</tr>
<tr>
<td class="KT_th">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="KT_buttons">
<td colspan="2"><input type="submit" name="KT_Insert1" id="KT_Insert1" value="OK" /> </td>
</tr>
</table>
<input type="hidden" name="id_user" id="id_user" value="<?php echo KT_escapeAttribute($row_rsshows['id_user']); ?>" />
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($categoria);
?>

25 de Fevereiro de 2014 - 08:10

Sua foto do perfil

Mauricio Programador

Olá Bonfim,

tem um ótimo exemplo de URL Amigavel neste link, clica e assiste lá tem todas as funções que você precisa para download também.

Abraço.

25 de Fevereiro de 2014 - 09:45

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER