Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leno Sousa

Url com caracteres especiais

Recommended Posts

Olá. Estou com um problema referente a caracteres especiais na minha URL.

Estou criando um site em php no Dreamweaver, criei um recordset onde minha tabela tem as seguintes colunas.

ID
Titulo
Imagem
Categoria
Texto.

Na parte da categoria eu linquei e fiz um parâmetro para que exiba uma página filtrada pela categoria selecionada.

Criei uma página para exibir a categoria da seguinte maneira site.com.br/categoria.php?categoria=nome da categoria.

 

só que o problema está no nome da categoria, quando eu abro uma categoria que tem caracteres especiais, não funciona, a página abre só que não exibe os resultados,


Ex: Comunicação e Publicidade

 

a url fica assim = www.site.com.br/categoria.php?categoria=Comunica%EF%BF%BDao%20&%20Publicidade

 

já uma outra categoria que não tem caracteres funciona normalmente.

 

O que eu posso fazer para resolver esse problema?

 

Agradeço a Ajuda

 

Compartilhar este post


Link para o post
Compartilhar em outros sites


/*****************************

TRANFORMA STRING EM URL

*****************************/

 

function setUri($string){

$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.,\\\'<>°ºª';

$b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr ';

$string = utf8_decode($string);

$string = strtr($string, utf8_decode($a), $b);

$string = strip_tags(trim($string));

$string = str_replace(" ","-",$string);

$string = str_replace(array("-----","----","---","--"),"-",$string);

return strtolower(utf8_encode($string));

}


Ex.:


$nomecat = $_POST['nome-da-categoria']; // Nome da categoria com os caracteres

$urlcat = setUri($nomecat); // url baseada no nome da categoria sem caracteres

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

/*****************************
TRANFORMA STRING EM URL
*****************************/

	function setUri($string){
		$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.,\\\'<>°ºª';
		$b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr                                 ';	
		$string = utf8_decode($string);
		$string = strtr($string, utf8_decode($a), $b);
		$string = strip_tags(trim($string));
		$string = str_replace(" ","-",$string);
		$string = str_replace(array("-----","----","---","--"),"-",$string);
		return strtolower(utf8_encode($string));
	}
Ex.:
$nomecat = $_POST['nome-da-categoria']; // Nome da categoria com os caracteres
$urlcat  = setUri($nomecat); // url baseada no nome da categoria sem caracteres

 

Rogério, Olha como fica.

1.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você cadastrou uma nova categoria?

 

Está salva com os acentos normais ou usando por exemplo ´

 

Criei uma nova, e ficou salva com os acentos normais no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério, Olha como fica.

1.jpg

 

Não vejo necessidade de passar o nome da categoria pela url neste caso especifico, o simples id da categoria resolveria.

Se passa o nome se for usar url amigável, ae sim, e isso já é uma outra história.

Verifique o a codificação, o certo é utf-8 sem bom, para evitar este erro.

 

Dreamweaver raiz de todo mau para quem esta começando, o programa tosco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo necessidade de passar o nome da categoria pela url neste caso especifico, o simples id da categoria resolveria.

Se passa o nome se for usar url amigável, ae sim, e isso já é uma outra história.

Verifique o a codificação, o certo é utf-8 sem bom, para evitar este erro.

 

Dreamweaver raiz de todo mau para quem esta começando, o programa tosco.

 

Essa é uma boa solução, só que como eu faria com que na URL exibisse o ID da Categoria, e na Descrição do Post aparecesse o nome da categoria.

 

tipo, tenho uma tabela 'notícia' que tem

- ID

- Titulo

- Imagem

- Categoria

- Texto.

 

e outra tabela 'categoria' que tem

- ID da Categoria

- Nome da Categoria.

 

utilizo a tabela categoria com o Select no formulário de cadastro de notícia.

 

ai eu faço com que ele puxe o nome da categoria e coloque na tabela notícia, mas posso fazer com que colete o ID ao invés do nome, isso resolveria o problema da URL, só que gostaria de exibir na descrição do Post com o nome da categoria, e pelo meu ver só apareceria ao ID, já que coletei apenas a ID da Categoria na hora do Registro da Notícia?.

 

Como Faço para que funcione dessa maneira?, eu crio um recordset no Dreamweaver, mas estou disposto a aprender sem ele também, caso só der de fazer manual, estou disposto a aprender.

 

Agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.