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ódigohttp://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ódigohttp://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ódigohttp://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ódigohttp://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ódigohttp://www.hosteste.esy.es/artigo/11/como_baixar_videos_do_youtube_pelo_celular_android/