Jump to content


Photo

Tratando Urls Amigáveis


  • Faça o login para participar
4 replies to this topic

#1 Thiago Mobilon

Thiago Mobilon

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Não informado

Posted 29/11/2006, 09:24

Bom dia galera.

Estou transformando as urls do meu site em Urls amigáveis, porém, para isso é necessário que eu trate as mesmas, substituindo caracteres como espaço, acentos, cedilha, vírgula e etc...

O que fiz foi o seguinte:

	   $item_url .= $attrs['NAME'];
	   $item_url = str_replace('/ ', '', $item_url);
	   $item_url = str_replace('ç', 'c', $item_url);
	   $item_url = str_replace('ã', 'a', $item_url);
	   $item_url = str_replace(' ', '_', $item_url);
	   $item_url = str_replace(',', '-', $item_url);
	   $item_url = urlencode($item_url);
	   $link = $xM_ant[$nivel].'<a href="'.$xM_link.$item_url.'_'.$attrs['ID'].'" target="'.$xM_target.'" class="'.$xM_css[$nivel].'">'.$attrs['NAME'].'</a>'.$xM_dsp[$nivel]."\n";

http://shop.substantivolatil.com/J%C3%B3ias-_Rel%C3%B3gios_e_%C3%93culos_3937

Como podem ver, isso deu certo parcialmente. Apenas o espaço, barra e vírgula foram substituídos, todo o resto não sofreu nenhuma alteração na URL.

Como devo fazer para tratar a URL corretamente a deixando completamente amigável??

#2 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 29/11/2006, 09:51

try

function monta_url( $palavra ){
	$l_s = array("a","e","i","o","u","c"," "); 
	
	$l_c['a'] = array("ã","á","à","â");
	$l_c['e'] = array("é");
	$l_c['i'] = array("í");
	$l_c['o'] = array("õ","ó","ô");
	$l_c['u'] = array("ú");
	$l_c['c'] = array("ç");
	$l_c[' '] = array("-");
	
	$palavra= strtolower( $palavra );
	
	foreach($l_s as $letra_sem){
		
		foreach($l_c[$letra_sem] as $letra_com){
		
			$palavra=str_replace($letra_com,$letra_sem,$palavra);
		
		}
	}
	$palavra = stripslashes( $palavra ); 
	$palavra = str_replace( '\'', '', $palavra ); 
	$palavra = str_replace( '?', '', $palavra );
	$palavra = str_replace( ' ', '-', $palavra );
	return $palavra;
}

* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#3 Thiago Mobilon

Thiago Mobilon

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Não informado

Posted 29/11/2006, 11:13

Não deu certo não.

Lembrando que não posso aplicar funções pois estamos dentro de um loop no XML.

Tentei fazer assim:

			   //Tratando URL
		$palavra_url .= $attrs['NAME'];

		$l_s = array("a","e","i","o","u","c"," ");
	
		$l_c['a'] = array("ã","á","à","â");
		$l_c['e'] = array("é");
		$l_c['i'] = array("í");
		$l_c['o'] = array("õ","ó","ô");
		$l_c['u'] = array("ú");
		$l_c['c'] = array("ç");
		$l_c[' '] = array("_");
		$palavra_url= strtolower($palavra_url);
			
		foreach($l_s as $letra_sem){
		
		foreach($l_c[$letra_sem] as $letra_com){
		
			$palavra_url=str_replace($letra_com,$letra_sem,$palavra_url);
		}
	}
		$palavra_url = stripslashes($palavra_url);
		$palavra_url = str_replace( '/ ', '', $palavra_url);
		$palavra_url = str_replace( '?', '', $palavra_url);
		$palavra_url = str_replace( ',', '-', $palavra_url);


Depois chamei a variável $palavra_url dentro do href pra formar o link:

$link = $xM_ant[$nivel].'<a href="'.$xM_link.$palavra_url.'_'.$attrs['ID'].'" target="'.$xM_target.'" class="'.$xM_css[$nivel].'">'.$attrs['NAME'].'</a>'.$xM_dsp[$nivel]."\n";

Eu não sei o que acontece, parece que o str_replace não está lendo as letras!!

#4 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 29/11/2006, 12:25

hummmm
no seu cod ja deve ta '%C3%93' e naum 'ó' por isso o cod naum funcionou...
entaum antes vc vai ter q decodificar este cod '%C3%93' para 'ó'

tenta com o urldecode depois a sequencia da função..
http://br2.php.net/m...n.urldecode.php
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#5 Thiago Mobilon

Thiago Mobilon

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Não informado

Posted 29/11/2006, 13:03

Luis, agradeço a ajuda!

Eu estava testando outras coisas e constatei que não funciona mesmo com o urldecode.
Na verdade não poderia ser esse o problema pois se não, ele não conseguiria substituir no str_replace os espaços por underlines, pois na url codificada, os espaços tambéem são codificados ;)..

Você imagina o que mais possa ser?

Alguém pode me ajudar?!

Alguém poderia por favor me ajudar com isso?!?! :(

????????????????????????

Edição feita por: Thiago Mobilon, 30/11/2006, 18:16.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq