Array
(
)

Como retirar o %2520 da minha url?

PHP
Cleyton Caetano
   - 25 set 2014

Bom, eu estou tendo um probleminha, estou chamando meu post com o seguinte código.
#Código

<a href="http://hosteste.esy.es/artigo/<?php echo $post['id'];?>?<?php echo $post['titulo'];?>" style="text-decoration: none;"><h1><?php echo $post['titulo'];?></h1></a>

o artigo está abrindo normalmente, uma vês que faço a pesquiza no banco de dados pelo ID, mas estou insatisfeito com a URL que recebo, eu coloquei o seguinte código para passar o título do post na URL depois do ID
#Código
?<?php echo $post['titulo'];?>

até que está funcionando, eu recebo o seguinte link no resultado final!
#Código
http://www.hosteste.esy.es/artigo/11?Como%2520baixar%2520v%25C3%25ADdeos%2520do%2520YouTube%2520pelo%2520celular%2520Android

só que meus planos não eram esses, eu tentei usar o .hatcess para personalizar o link mas não consegui, só por parte, eu quero que o meu link fique sem esses %2520, seria legal trocar ele por - mas não sei como! :(
meu plano de link
#Código
http://www.hosteste.esy.es/artigo/11?Como-baixar-v%25C3%25ADdeos-do-YouTube-pelo-celular-Android

alguém pra ajudar?

Ronaldo Lanhellas
   - 25 set 2014

Não podem existir espaços em branco na url, então se o seu título é:

"Como baixa videos" . A URL não pode ficar: "http://seusite.com.br/como baixar videos", então por padrão é colocado '%' nos espaços em branco.

Você poderia resolver isso facilmente tratamento o $post['titulo'] antes de colocar na url, ou seja, substituir espaços em branco por '-'.

Cleyton Caetano
   - 25 set 2014


Citação:
Não podem existir espaços em branco na url, então se o seu título é:

"Como baixa videos" . A URL não pode ficar: "http://seusite.com.br/como baixar videos", então por padrão é colocado '%' nos espaços em branco.

Você poderia resolver isso facilmente tratamento o $post['titulo'] antes de colocar na url, ou seja, substituir espaços em branco por '-'.


é justamente o que eu passei a manhã toda aqui tentando, fiz algumas alterações!

tentei isso! mas não funcionou :/
#Código

$url_get = strip_tags( trim ( $post['titulo'] ) );

<a href="http://hosteste.esy.es/artigo/<?php echo $post['id'];?>?<?php echo $url_get;?>/">

Ronaldo Lanhellas
   - 25 set 2014

Tente assim:

#Código

$url_get = str_replace(' ','-', trim ( $post['titulo'] ) );
 
<a href="http://hosteste.esy.es/artigo/<?php echo $post['id'];?>?<?php echo $url_get;?>/">

Cleyton Caetano
   - 25 set 2014


Citação:
Tente assim:

#Código

$url_get = str_replace(' ','-', trim ( $post['titulo'] ) );
 
<a href="http://hosteste.esy.es/artigo/<?php echo $post['id'];?>?<?php echo $url_get;?>/">


eu tentei assim.
#Código
$url_tratada = str_replace(" ", "-", $post['titulo'] );

acho que da no mesmo que seu exemplo ai! e parece ter resolvido o problema, veja o resultado!

#Código
http://www.hosteste.esy.es/artigo/2?Tela-inicial-do-Apple-Watch-j%25C3%25A1-est%25C3%25A1-dispon%25C3%25ADvel-no-Android-Wear/


acho que o problema agora está sendo com acentuação, vou procurar um jeito de retirar os acentos e colocar todas as letras em minúsculas, tem como né?

Ronaldo Lanhellas
   - 25 set 2014

Sim, esse é o caminho, tratar a string antes de colocar no link, pois espaços e brancos e acentos e outros caracteres especiais são substituídos por um "encode".

Cleyton Caetano
   - 25 set 2014

Bom, consegui resolver o problema com uma array..
a princípio tentei

$url_tratada = str_replace(" ", "-", $post['titulo'] );
$url_tratada = str_replace("í", "i", $url_tratada);
$url_tratada = str_replace("â", "a", $url_tratada);

e estava funcionando legal, mas ia dar muito trabalho fazer esse replace pra todos! então tentei com uma array e ficou assim!

#Código

<?php
					$url_tratada = str_replace(" ", "-", $post['titulo'] ); 
					
					$map = array(
						'á' => 'a',
						'à' => 'a',
						'ã' => 'a',
						'â' => 'a',
						'é' => 'e',
						'ê' => 'e',
						'í' => 'i',
						'ó' => 'o',
						'ô' => 'o',
						'õ' => 'o',
						'ú' => 'u',
						'ü' => 'u',
						'ç' => 'c',
						'Á' => 'a',
						'À' => 'a',
						'Ã' => 'a',
						'Â' => 'a',
						'É' => 'e',
						'Ê' => 'e',
						'Í' => 'i',
						'Ó' => 'o',
						'Ô' => 'o',
						'Õ' => 'o',
						'Ú' => 'u',
						'Ü' => 'u',
						'Ç' => 'c'
					);
					
					?>


link

#Código
<?php echo strtr($url_tratada, $map);?>

Cleyton Caetano
   - 25 set 2014

pronto, depois de implementar o código um pouquinho acabei abandonando o str_replace!

meu código ficou assim agora!

antes do início da página coloquei minha array

#Código

<?php
					$map = array(
						'á' => 'a',
						'à' => 'a',
						'ã' => 'a',
						'â' => 'a',
						'é' => 'e',
						'ê' => 'e',
						'í' => 'i',
						'ó' => 'o',
						'ô' => 'o',
						'õ' => 'o',
						'ú' => 'u',
						'ü' => 'u',
						'ç' => 'c',
						'Á' => 'a',
						'À' => 'a',
						'Ã' => 'a',
						'Â' => 'a',
						'É' => 'e',
						'Ê' => 'e',
						'Í' => 'i',
						'Ó' => 'o',
						'Ô' => 'o',
						'Õ' => 'o',
						'Ú' => 'u',
						'Ü' => 'u',
						'Ç' => 'c',
						'A' => 'a',
						'B' => 'b',
						'C' => 'c',
						'D' => 'c',
						'E' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'C' => 'c',
						'D' => 'd',
						'E' => 'e',
						'F' => 'f',
						'G' => 'g',
						'H' => 'h',
						'I' => 'i',
						'J' => 'j',
						'L' => 'l',
						'M' => 'm',
						'N' => 'n',
						'O' => 'o',
						'P' => 'p',
						'Q' => 'q',
						'R' => 'r',
						'S' => 's',
						'T' => 't',
						'U' => 'u',
						'V' => 'v',
						'X' => 'x',
						'Z' => 'z',
						'W' => 'w',
						'Y' => 'y',
						'K' => 'k',
						' ' => '_',
						'!' => '_!',
						'?' => '_?',
						',' => ''
					);
					
					?>

e nos links agora só faço adicionar o $map ficando assim!

#Código
<a href="http://hosteste.esy.es/artigo/<?php echo $post['id'];?>?<?php echo strtr($post['titulo'], $map);?>


o resultado é um link quase perfeito!

#Código
http://www.hosteste.esy.es/artigo/11?como_baixar_videos_do_youtube_pelo_celular_android/


eu queria tirar esse $_GET da URL pra meu link ficar sem essa ? queria uma / no lugar alguma ideia alternativa de como fazer? ou só no .htaccess mesmo?

quero assim
#Código
http://www.hosteste.esy.es/artigo/11/como_baixar_videos_do_youtube_pelo_celular_android/