post

Normalizar textos e formatar para URL com PHP

CATEGORIAS

blog PHP

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

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 = str_replace(" ", "-", trim($string));
  $string = str_replace(['!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]"], '' , $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

bruno.art.br/r/NjUy

Comentários