Função limpa texto pra virar URL
Ó, esta é pra quem não frequenta o fórum e o portal iEvolution, afinal quem já frequenta, já viu ela em uso.
Hoje mostro uma função PHP pra variar um pouco né? Ficar só sempre no JavaScript aqui no blog deve ser meio chato pra muitos de vocês. Lets go.
Muitas vezes, principalmente quando estamos trabalhando para deixar nossas url’s amigáveis (aqui outros exemplos de friendly url) nos deparamos com alguns links nossos gerados a partir de banco de dados que contém: acentos, cedilha, pontuações, etc.
Isso em um link pode dar boró né?
O wordpress e o blogger têm suas próprias funções pra isto muito mal feitas. Elas desrespeitam nossa beeela língua (hehe) e simplesmente removem os caracteres que têm acento. O que? Acha que isto não dá problema? Lembre-se que "quem tem céu, tem medo".
Pra resorver este póbrema o mico aqui tentou fazer uma funçãozinha.
Função que gera uma texto limpo pra virar URL:
- limpa acentos e transforma em letra normal
- limpa cedilha e transforma em c normal, o mesmo com o ñ
- transforma espaços em hífen (-) (chama hífen mesmo né?)
- tira caracteres invalidos e pontuações
Por exemplo, temos o texto "O cabeçudo & a máfia é ônti. O cabeçudo & a máfia é ônti.htm"
Que queremos que vire a url "o-cabecudo-a-mafia-e-onti-o-cabecudo-a-mafia-e-onti.htm"
1) Pegue esta minha função
function geraUrlLimpa($texto){
/* função que gera uma texto limpo pra virar URL:
- limpa acentos e transforma em letra normal
- limpa cedilha e transforma em c normal, o mesmo com o ñ
- transforma espaços em hífen(-)
- tira caracteres invalidos
by Micox - elmicox.blogspot.com - www.ievolutionweb.com
*/
//desconvertendo do padrão entitie (tipo á para á)
$texto = html_entity_decode($texto);
//tirando os acentos
$texto = eregi_replace('[aáàãâä]','a',$texto);
$texto = eregi_replace('[eéèêë]','e',$texto);
$texto = eregi_replace('[iíìîï]','i',$texto);
$texto = eregi_replace('[oóòõôö]','o',$texto);
$texto = eregi_replace('[uúùûü]','u',$texto);
//parte que tira o cedilha e o ñ
$texto = eregi_replace('[ç]','c',$texto);
$texto = eregi_replace('[ñ]','n',$texto);
//trocando espaço em branco por underline
$texto = eregi_replace('( )','-',$texto);
//tirando outros caracteres invalidos
$texto = eregi_replace('[^a-z0-9\-]','',$texto);
//trocando duplo espaço (underline) por 1 underline só
$texto = eregi_replace('--','-',$texto);
return strtolower($texto);
}
2) Use a danada
$tes = "O cabeçudo & a máfia é ônti. O cabeçudo & a máfia é ônti.htm";
$tes = geraUrlLimpa($tes)."html";
echo $tes."“;
//irá gerar o-cabecudo-a-mafia-e-onti-o-cabecudo-a-mafia-e-onti.html
Se alguém quiser corrigir o wordpress usando minha função e linkar pro pessoal saber como implantar a modificação, acho que será de grande ajuda para os users do wordpress não terem mais medo de dar o céu aos outros heheh.
Dúvidas, pergunta lá no tópico do fórum ok?
Outubro 25th, 2007 12:33
Legal. Preciso de algo assim para cadastro de username. Vou testar.
Junho 28th, 2008 21:06
Parabéns, muito bom, vou até estudar seu codigo e fazer um em .net, se me permite (hehe)
Julho 8th, 2008 17:31
Valeu Elmicox, você é o cara….sempre com soluções eficientes, tanto para problemas mais simples quanto para os grandes e complexos.
Sempre que vejo o nome “Elmicox” dou especial atenção(resultados de busca,forums, etc).
inté, Roberto Entringer.