1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-26 00:28:03 +02:00
Files
archived-doc-es/reference/url/functions/http-build-query.xml
T
2015-09-16 20:32:42 +00:00

303 lines
8.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 408baf15371b41dceadf8984a1ab121240594aa5 Maintainer: chuso Status: ready -->
<refentry xml:id="function.http-build-query" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>http_build_query</refname>
<refpurpose>Generar una cadena de consulta codificada estilo URL</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>http_build_query</methodname>
<methodparam><type>mixed</type><parameter>query_data</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>numeric_prefix</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>arg_separator</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>enc_type</parameter><initializer><constant>PHP_QUERY_RFC1738</constant></initializer></methodparam>
</methodsynopsis>
<para>
Genera una cadena de consulta codificada estilo URL a partir del array asociativo (o indexado) dado.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>query_data</parameter></term>
<listitem>
<para>
Puede ser un array u objeto que contenga propiedades.
</para>
<para>
Si <parameter>query_data</parameter> es un array, puede ser
de una dimensión, o un array de arrays (que a su vez
puede contener otros arrays).
</para>
<para>
Si <parameter>query_data</parameter> es un objeto, sólo las propiedades
que son públicas serán incorporadas en el resultado.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>numeric_prefix</parameter></term>
<listitem>
<para>
Si se usan índices numéricos en el array base y se provee este
parámetro, éste será añadido al comienzo de los índices numéricos
para aquellos elementos encontrados sólo en el array base.
</para>
<para>
Esto significa tener en cuenta los nombres de variables legales
cuando los datos sean decodificados por PHP u otra aplicación CGI más adelante.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>arg_separator</parameter></term>
<listitem>
<para>
<link linkend="ini.arg-separator.output">arg_separator.output</link>
es usado para separar argumentos, a menos que este parámetro sea
especificado, en cuyo caso éste será usado.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enc_type</parameter></term>
<listitem>
<para>
Por omisión, <constant>PHP_QUERY_RFC1738</constant>.
</para>
<para>
Si <parameter>enc_type</parameter> es
<constant>PHP_QUERY_RFC1738</constant>, la codificación se realiza de acuerdo al
<link xlink:href="&url.rfc;1738">RFC 1738</link> y el tipo de medios
<literal>application/x-www-form-urlencoded</literal>, lo que
implica que los espacios son codificados con el signo más (<literal>+</literal>).
</para>
<para>
Si <parameter>enc_type</parameter> es
<constant>PHP_QUERY_RFC3986</constant>, la codificación se realiza de
acuerdo al <link xlink:href="&url.rfc;3986">RFC 3986</link>, y
los espacios serán codificados (<literal>%20</literal>) más.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve una cadena codificada en forma URL.
</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>5.4.0</entry>
<entry>
Se agregó el parámetro <parameter>enc_type</parameter>.
</entry>
</row>
<row>
<entry>5.1.3</entry>
<entry>
Los corchetes cuadrados son escapados.
</entry>
</row>
<row>
<entry>5.1.2</entry>
<entry>
Se agregó el parámetro <parameter>arg_separator</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Uso simple de <function>http_build_query</function></title>
<programlisting role="php">
<![CDATA[
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&amp;');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor
]]>
</screen>
</example>
<example>
<title><function>http_build_query</function> con elementos indexados numéricamente.</title>
<programlisting role="php">
<![CDATA[
<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, 'myvar_');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor
]]>
</screen>
</example>
<example>
<title>con arrays complejos <function>http_build_query</function></title>
<programlisting role="php">
<![CDATA[
<?php
$data = array('user'=>array('name'=>'Bob Smith',
'age'=>47,
'sex'=>'M',
'dob'=>'5/12/1956'),
'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
'children'=>array('bobby'=>array('age'=>12,
'sex'=>'M'),
'sally'=>array('age'=>8,
'sex'=>'F')),
'CEO');
echo http_build_query($data, 'flags_');
?>
]]>
</programlisting>
<para>
esto generará la salida: (acotada por razones de legibilidad)
</para>
<screen>
<![CDATA[
user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&
user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&
pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&
children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8&
children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO
]]>
</screen>
<para>
<note>
<para>
Sólo el elemento "CEO" indexado numéricamente el array base recibió un
prefijo. Los otros índices numéricos, encontrados bajo los pasatiempos, no
requieren un prefijo tipo cadena para ser nombres legales de variables.
</para>
</note>
</para>
</example>
<example>
<title>Uso de <function>http_build_query</function> con un objeto</title>
<programlisting role="php">
<![CDATA[
<?php
class parentClass {
public $pub = 'publicParent';
protected $prot = 'protectedParent';
private $priv = 'privateParent';
public $pub_bar = Null;
protected $prot_bar = Null;
private $priv_bar = Null;
public function __construct(){
$this->pub_bar = new childClass();
$this->prot_bar = new childClass();
$this->priv_bar = new childClass();
}
}
class childClass {
public $pub = 'publicChild';
protected $prot = 'protectedChild';
private $priv = 'privateChild';
}
$parent = new parentClass();
echo http_build_query($parent);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
pub=publicParent&pub_bar%5Bpub%5D=publicChild
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>parse_str</function></member>
<member><function>parse_url</function></member>
<member><function>urlencode</function></member>
<member><function>array_walk</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
-->