Files
Leonardo Lara Rodrigues a01dc4aac1 sync with en rev
2025-05-06 19:59:10 -03:00

200 lines
5.8 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: da15b6674ac1900c7d065bd746a04b53d7e963bf Maintainer: leonardolara Status: ready --><!-- CREDITS: fernandoc,ae,leonardolara -->
<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>parse_str</refname>
<refpurpose>Interpreta uma string como uma requisição URL</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>parse_str</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
</methodsynopsis>
<para>
Interpreta <parameter>string</parameter> como se ela fosse uma string de consulta
passada via URL e define chaves no array informado em <parameter>result</parameter>.
Se nenhum parâmetro <parameter>result</parameter> for passado, os valores são
definidos como variáveis no escopo atual.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
A string de entrada.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>result</parameter></term>
<listitem>
<para>
Uma variável passada por referência, que será definida como um array
contendo os pares chave-valor extraídos de <parameter>string</parameter>.
Se o parâmetro <parameter>result</parameter> não for passado,
uma variável separada será definida no escopo local para cada chave.
</para>
<warning>
<para>
Utilizar esta função sem o parâmetro <parameter>result</parameter> é altamente
<emphasis>DESENCORAJADO</emphasis> e foi <emphasis>DESCONTINUADO</emphasis> a partir do PHP 7.2.
Desde o 8.0.0, o parâmetro <parameter>result</parameter> é <emphasis>obrigatório</emphasis>.
</para>
</warning>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>result</parameter> não é mais opcional.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Utilização de <function>parse_str</function> sem o segundo parâmetro
agora emite um aviso de <constant>E_DEPRECATED</constant>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Usando <function>parse_str</function></title>
<programlisting role="php">
<![CDATA[
<?php
$str = "primeiro=valor&arr[]=foo+bar&arr[]=baz";
// Recomendado
parse_str($str, $output);
echo $output['primeiro'], PHP_EOL; // valor
echo $output['arr'][0], PHP_EOL; // foo bar
echo $output['arr'][1], PHP_EOL; // baz
?>
]]>
</programlisting>
</example>
</para>
<para>
Quaisquer espaços e pontos em nomes de parâmetros são convertidos em sublinhados
ao criar chaves de array ou variáveis locais.
Isso ocorre porque nomes de variáveis em PHP não podem conter espaços
ou pontos, e se aplica mesmo ao usar esta função com o parâmetro
<parameter>result</parameter> recomendado.
<example>
<title>Codificação de nomes em <function>parse_str</function></title>
<programlisting role="php">
<![CDATA[
<?php
parse_str("Meu Valor=Algo", $output);
echo $output['Meu_Valor']; // Algo
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
<function>parse_str</function> é afetada pela diretiva <link linkend="ini.max-input-vars">max_input_vars</link>.
Exceder esse limite emite um <constant>E_WARNING</constant>,
e quaisquer variáveis além do limite não são adicionadas ao array de resultados.
O padrão é 1000; ajuste <link linkend="ini.max-input-vars">max_input_vars</link> conforme necessário.
</para>
</note>
<note>
<para>
Todos os valores preenchidos no array <parameter>result</parameter>
(ou variáveis criadas se o segundo parâmetro não estiver definido)
já são decodificados por URL usando as mesmas regras de <function>urldecode</function>.
</para>
</note>
<note>
<para>
Para obter a string de consulta da solicitação atual, pode ser usada a variável
<varname>$_SERVER['QUERY_STRING']</varname>.
Além disso, leia a seção sobre
<link linkend="language.variables.external">variáveis de fontes
externas</link>.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>parse_url</function></member>
<member><function>pathinfo</function></member>
<member><function>http_build_query</function></member>
<member><function>urldecode</function></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
-->