post
Normalizar textos e formatar para URL com PHP
Publicado em: 30/12/2020
Caso precise formatar ou normalizar textos com acentuações para por exemplo gerar um slug ou url através de um titulo, essa função pode lhe ajudar.
Existe varias maneiras de serem feitos, vou mostrar uma delas abaixo junto com o exemplo abaixo:
Exemplo:
Titulo: Vivendo um dia de cão, e suas ações
Normalizado: Vivendo um dia de cao, e suas acoes
Formatado para url: vivendo-um-dia-de-cao-e-suas-acoes
Visualizar exemplo em produção: https://normalizar-textos-e-formatar-para-url-com-php.brunoalbim.repl.co/
Código para normalização das palavras:
function normalize($string) {
$table = array(
'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c',
'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O',
'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',
'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',
'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r',
);
return strtr($string, $table);
}
Código para formatar para url:
function formate_url($string) {
$string = preg_replace('/[[email protected]#$%¨&*><:;.,°º\)\}\]]+/' , '' , trim($string));
$string = preg_replace('/[ \/\(\{\[]+/' , '-' , trim($string));
return strtolower(normalize($string));
}
Os scripts acima podem ser encontrados em execução em tempo real no link abaixo:
https://repl.it/@brunoalbim/Normalizar-textos-e-formatar-para-URL-com-PHP#index.php
Link de compartilhamento
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.
bruno.art.br/pb/652
ID de Referência: 652
Sugira uma publicação
Envie uma mensagem para mim, e sugira alguma publicação de algum tema que tenha dificuldades de resolver.