Codificação de espaço URI do Zend Framework em PHP e Javascript
-
21-09-2019 - |
Pergunta
Eu tenho um URI do Zend Framework como /controller/action/var1/value1/var2/value2 .
Value2 contém um caractere de espaço.Como devo codificá-lo em PHP?Quando uso urlencode com valor2, isso converte o espaço em '+' em vez de '%20f'.Tudo bem?
Este valor2 também é adicionado a um local href por javascript no lado do cliente.Estou usando a função de escape lá, mas quando clico no link não vejo '+' nem '%20f' na barra de endereços do Firefox.Porém, quando o vejo na guia 'net' do firebug, vejo% 20f.
Quais funções devo usar em PHP e javascript?
Solução
Sobre sua primeira pergunta, essa é a diferença entre urlencode
e rawurlencode
:
var_dump(urlencode("hello, world"));
Te pegarei:
string 'hello%2C+world' (length=14)
Enquanto
var_dump(rawurlencode("hello, world"));
vai te pegar:
string 'hello%2C%20world' (length=16)
Suponho que ambos deveriam estar bem;mas sinta-se à vontade para tentar, só para garantir ;-)
Sobre o segundo ponto:O Firefox tenta tornar as URLs "mais bonitas", exibindo-as de uma forma legível por humanos, em vez de codificadas - o que é ruim para nós, desenvolvedores, mas bom para os usuários finais.
Por exemplo, se eu digitar este URL na barra de endereços do Firefox:
http://tests/temp/temp.php?a=hello%2C%20world
Quando eu pressiono o digitar chave, ela é automaticamente traduzida para
http://tests/temp/temp.php?a=hello%2C%20world
Se funcionar do jeito que você está fazendo (e, como você está vendo uma URL codificada com Firebug, provavelmente está funcionando), está tudo bem ;-)