(PHP 4, PHP 5, PHP 7)
urlencode — Codifica uma URL
$str
) : string
Retorna uma string em que todos os caracteres não-alfanuméricos com exceção de
-_.
são substituidos com um sinal de porcento
(%
) siguido por dois digitos hexadecimais e espaços
codificados como um sinal de (+
). É codificada
do mesmo jeito que dados vindos de um formulário WWW é codificado, isto é,
da mesma maneira que
application/x-www-form-urlencoded
.
Isto é diferente da codificação RFC1738 (veja
rawurlencode()) nesta por razões historicas,
espaços são codificados como sinais de mais(+).
Esta função é conveniente para codificar uma string que será
passada como parte de uma URL, como um meio de passar variáveis
para a próxima pagina:
Exemplo #1 Exemplo urlencode()
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Nota: Seja cuidadoso com variaveis que sejam iguais a entidades HTML. Coisas como &, © e £ são interpretados pelo browser e a entidade atual é usada ao invés do nome de variavel desejado. Isto é um problema obvio que o W3C vem falando a todos a anos. A referrência esta aqui: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2. O PHP suporta que se mude o separador de argumentos para o ponto e vírgula sugerido pelo W3C através da diretiva de configuração arg_separator. Infelizmente a maior parte dos aplicativos não envia os dados neste formato. Um meio mais portável é usar & ao invés de & como separador. Você não precisa mudar arg_separator para isto. Deixe como &, mas simplesmente codifique as suar URLs usando htmlentities(urlencode($data)).
Exemplo #2 Exemplo urlencode() e htmlentities()
<?php
echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';
?>
Veja também urldecode(), htmlentities(), rawurldecode() e rawurlencode().