A tempos atras aqui mesmo no blog, postei um artigo ensinando a Como fazer URLs amigaveis com .htaccess e php. Entretanto, para ficar mais completo, você pode incrementar a função abaixo:
function NormalizaURL($str){
$str = strtolower(utf8_decode($str)); $i=1;
$str = strtr($str, utf8_decode('àáâãäåæçèéêëìíîïñòóôõöøùúûýýÿ'), 'aaaaaaaceeeeiiiinoooooouuuyyy');
$str = preg_replace("/([^a-z0-9])/",'-',utf8_encode($str));
while($i>0) $str = str_replace('--','-',$str,$i);
if (substr($str, -1) == '-') $str = substr($str, 0, -1);
return $str;
}
ela fará que uma string se torne uma URL amigável, ou seja, de fácil leitura humana e dos buscadores (SEO).
Por exemplo, você tem uma noticia com o titulo:
Rihanna toma caipirinha, come picolé, tatua braço e faz castelo na areia no RJ
Ao passar pelo codigo, ira retornar:
rihanna-toma-caipirinha-come-picole-tatua-braco-e-faz-castelo-na-areia-no-rj
Agora é so montar a url como desejar, por exemplo:
http://seudominio.com.br/2134/rihanna-toma-caipirinha-come-picole-tatua-braco-e-faz-castelo-na-areia-no-rj.html
Onde, seudominio é o seu domínio, 2134 seria o ID da matéria no banco de dados, e o restante apenas uma mascara para indexação nos buscadores. ;)
Have Fun!
19 comments
Atualizei, deixando o código mais limpo e com menos variáveis. :)
Olá Diogo,
Primeiramente obrigado pelo post, segundo: Você sabe me dizer o porque no meu script as letras com acento estão sumindo?
Willians, é por causa da codificação. Remova os acentos antes de usar a URL dinamica, ok? ;)
Muito bom Diogo parabéns, seu blog esta me ajudando muito
Valeu João, se quiser mandar umas camisetas, fique a vontade!! ;D
Diogo , Tudo bom ?
Diogo não estou conseguindo tirar os acentos , e dar esse erro ??????? onde tem os acentos o que está errado ?
Juan, isso é problema de codificacao. UTF* e cia… verifica isso! :)
Olá, Sou analista de suporte e curioso em relação a Web, tenho estudado o PHP para desenvolvimento próprio e me deparei com o seu artigo que é muito bom. Parabéns.
Gostaria de saber se é possível usar esta metodologia que nos apresentou numa url como:
http://meudomineo.com.br/index.php?id=/home/index.php&cd_veiem=0&cd_veico=0
Veja que faz um get no banco pra trazer a pagina.
Obrigado.
Atenciosamente.
Inverno, exatamente para eliminar essa url foi escrito este post
Diogo,
Segui o post anterior e este post, mas não funcionou por aqui.
A URL é do tipo “/noticia.php?id=x” e eu já utilizava como “/noticia/x”.
A função que cria a URL funciona normalmente, mas so obtive erros.
Como ficaria o .htaccess nesse caso?
Marcelo, depende dos seus erros. O que esta acontecendo?
Valeu, bem legal :D
Cara, muito boa essa função hein. Parabéns mesmo.
Olá Diogo!! realmente seu artigo foi muito bom e estou utilizando muito!!!! Porém me deparei com um problema em uma URL que contém acento e cedilha no lugar dos dois ele coloca um traço como no exemplo abaixo.
http://www.meudominio.com/Cliente/vilmar-representa-es-telhas-rainha/1911.html
sendo que o correto a da URL seria esta
http://www.meudominio.com/Cliente/vilmar-representacoes-telhas-rainha/1911.html
não sei o que poderia ser tens ideia do que é?
Desde já agradeço a sua atenção e ao código disponibilizado!!
Abraços.
Douglas Matos.
Como dito anteriormente pelo Dourado… o lance dos caracteres acentuados é problema das “UTF* e cia”
Desta forma, tentem alterar as duas primeiras linhas da função para:
$str = strtolower(utf8_decode($str)); $i=1;
$str = strtr($str, ‘àáâãäåæçèéêëìíîïñòóôõöøùúûýýÿ’, ‘aaaaaaaceeeeiiiinoooooouuuyyy’);
Grande abraço Dourado!
E mais uma vez… baita script =)
como eu chamo essa função pra normalizar minha url?
ex: pessoas%20às%20
Já testei quase todos os scripts da net, e esse foi o que chegou mais perto.. Mas ainda está com o problema de remover os caracteres com (ç) e (ã) etc.. já alterei as linhas conforme o Zanette e nada tbm. alguma outra ideia?
Amigo boa tarde. O meu filho fez um portal de notícias em php, porém a url não está amigavel. Como ele está morando em outra cidade e muito ocupado eu mesmo resolvi fazer algumas alterações nos código php e uma das mudanças que pretendo realizar é essa. Sou analista de sistema mas nunca programei em php e estou apanhando e muito. No caso desse teu exemplo em que lugar do código ele deverá ficar e outra coisa, é apenas esse código que você postou ou tem mais algumas outras funções e/ou rotinas pra fazer funcionar?
Agradeço
Walter, essa parte é apenas do PHP, tem o htaccess que voce deve configurar. No post eu coloquei o link la. Procura por REWRITE que acha muita coisa legal.