Forum und email

urlencode

(PHP 4, PHP 5)

urlencode — Codifica uma URL

Descrição

string urlencode ( string $str )

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:

Example#1 Exemplo urlencode()

<?php
echo '<a href="mycgi?foo='urlencode($userinput), '">';
?>

Nota: Seja cuidadoso com variaveis que sejam iguais a entidades HTML. Coisas como &amp, &copy e &pound 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: » https://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 &amp; 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)).

Example#2 Exemplo urlencode() e htmlentities()

<?php
echo '<a href="mycgi?foo='htmlentities(urlencode($userinput)), '">';
?>

Veja também urldecode(), htmlentities(), rawurldecode() e rawurlencode().