Files
2024-09-23 11:22:43 -03:00

159 lines
5.0 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 767338231c3e14c7be5399b8e2e0c3b60f7ae8dd Maintainer: leonardolara Status: ready -->
<refentry xml:id="function.urlencode" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>urlencode</refname>
<refpurpose>Codifica uma string no formato URL</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>urlencode</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
</methodsynopsis>
<para>
Esta função é conveniente ao codificar uma string a ser usada em uma parte de
consulta de uma URL, como uma maneira conveniente de passar variáveis para a próxima página.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
A string a ser codificada.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retorna uma string na qual todos os caracteres não alfanuméricos, exceto
<literal>-_.</literal>, foram substituídos por um sinal de porcentagem
(<literal>%</literal>) seguido por dois dígitos hexadecimais e espaços codificados
como sinais de adição (<literal>+</literal>). Ela é codificada da mesma forma que
os dados enviados por um formulário WWW são codificados, ou seja, da mesma forma que no
tipo de mídia <literal>application/x-www-form-urlencoded</literal>. Isso
difere da codificação <link xlink:href="&url.rfc;3986">RFC 3986</link> (consulte
<function>rawurlencode</function>) porque, por razões históricas, os espaços
são codificados como sinais de adição (+).
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemplo de <function>urlencode</function></title>
<programlisting role="php">
<![CDATA[
<?php
$userinput = 'Dados123!@-_ +';
echo "Entrada do usuário: $userinput\n";
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
]]>
</programlisting>
&example.outputs;
<screen role="html">
<![CDATA[
Entrada do usuário: Dados123!@-_ +
<a href="mycgi?foo=Dados123%21%40-_+%2B">
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Exemplo de <function>urlencode</function> e <function>htmlentities</function></title>
<programlisting role="php">
<![CDATA[
<?php
$foo = 'Dados123!@-_ +';
$bar = "Diferente de $foo";
echo "foo: $foo\n";
echo "bar: $bar\n";
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
]]>
</programlisting>
&example.outputs;
<screen role="html">
<![CDATA[
foo: Dados123!@-_ +
bar: Diferente de Dados123!@-_ +
<a href="mycgi?foo=Dados123%21%40-_+%2B&amp;bar=Diferente+de+Dados123%21%40-_+%2B">
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Deve-se ter cuidado com variáveis que possam corresponder a entidades HTML. Coisas como
&amp;amp, &amp;copy e &amp;pound são analisadas pelo navegador e a
entidade real é usada no lugar do nome da variável desejada. Este é um
incômodo óbvio sobre o qual o W3C vem falando às pessoas há anos.
A referência está aqui: <link xlink:href="&url.argsep;">&url.argsep;</link>.
</para>
<para>
O PHP suporta a alteração do separador de argumentos para o ponto e vírgula
sugerido pelo W3C por meio da diretiva INI arg_separator. Infelizmente, a maioria
dos agentes de usuário não envia dados de formulário neste formato separado por ponto e vírgula.
Uma maneira mais portável de contornar isso é usar &amp;amp; em vez de &amp; como
separador. Não é necessário alterar o arg_separator do PHP para isso.
Deve ser mantido como &amp;, mas as URLs devem simplesmente ser codificadas usando
<function>htmlentities</function> ou
<function>htmlspecialchars</function>.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>urldecode</function></member>
<member><function>htmlentities</function></member>
<member><function>rawurlencode</function></member>
<member><function>rawurldecode</function></member>
<member><link xlink:href="&url.rfc;3986">RFC 3986</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->