How PHP uses http_build_query() to construct a URL string_php tips

WBOY
Release: 2016-05-16 19:55:04
Original
1271 people have browsed it

The example in this article describes how PHP uses http_build_query() to construct a URL string. Share it with everyone for your reference, the details are as follows:

To put it simply, http_build_query() converts an array into the parameter string after the url question mark?, and automatically performs urlencode processing.

Let’s quote the official explanation:

http_build_query

http_build_query -- Generate the request string description string after url-encoded http_build_query (array formdata [, string numeric_prefix] )

Generate a url-encoded request string using the given associative (or subscripted) array. The parameter formdata can be an array or an object containing properties. A formdata array can be a simple one-dimensional structure, or it can be an array of arrays (which in turn can contain other arrays). If numeric subscripts are used in the underlying array and the numeric_prefix parameter is given, this parameter value will be used as the prefix for the numeric subscript elements in the underlying array. This is to allow PHP or other CGI programs to obtain valid variable names when decoding the data later.

Let’s look at some simple examples:

$data = array(
    'foo'=>'bar',
    'baz'=>'boom',
    'site'=>'www.nowamagic.net',
    'name'=>'nowa magic');
echo http_build_query($data);
/* output
 foo=bar&baz=boom&cow=milk&php=hypertext+processor
*/

Copy after login

What if it is a mixed array of index array and associative array?

$data = array(
    'foo',
    'bar',
    'site'=>'www.nowamagic.net',
    'name'=>'nowa magic');
echo http_build_query($data);
/* output
    0=foo&1=bar&site=www.nowamagic.net&name=nowa+magic
*/

Copy after login

It automatically adds numeric index.

http_build_query also has a parameter that can prefix the numeric index. Let’s try again:

$data = array(
    'foo',
    'bar',
    'site'=>'www.nowamagic.net',
    'name'=>'nowa magic');
echo http_build_query($data, "nm_");
/* output
nm_0=foo&nm_1=bar&site=www.nowamagic.net&name=nowa+magic
*/

Copy after login

What about a more complex array? For example, a two-dimensional array or something.

$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');

Copy after login

The output result is:

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&0=CEO

Copy after login

Wrapped for readability:

user[name]=Bob+Smith&user[age]=47&user[sex]=M&user[dob]=5%1F12%1F1956&
pastimes[0]=golf&pastimes[1]=opera&pastimes[2]=poker&pastimes[3]=rap&
children[bobby][age]=12&children[bobby][sex]=M&children[sally][age]=8&
children[sally][sex]=F&flags_0=CEO

Copy after login

Note: Only the numeric subscript element "CEO" in the basic array has obtained the prefix. Other numeric subscript elements (such as elements under pastimes) do not need to be prefixed for legal variable names.

Not only arrays, but also objects can be converted into URL strings:

class myClass {
  var $foo;
  var $baz;
  function myClass() {
  $this->foo = 'bar';
  $this->baz = 'boom';
  }
}
$data = new myClass();
echo http_build_query($data);

Copy after login

At the end, let’s mention a few more functions that you may need to know when searching for http_build_query:

1. parse_str: Convert the parameters following a url? into an array, array parse_str(url, arr).

2. parse_url: Parse a complete url into an array, array parse_url (string url).

3. http_build_query: Let’s briefly explain, convert an array into a url? The following parameter string will be automatically processed by urlencode, string http_build_query (array formdata [, string numeric_prefix]), the following parameter string is not specified in the array Keys or keys are subscripted for numbers.

Readers who are interested in more PHP-related content can check out the special topics on this site: "Summary of PHP operations and operator usage", "Summary of PHP network programming skills", " Introductory tutorial on PHP basic syntax", "Summary of PHP office document operation skills (including word, excel, access, ppt)", "Summary of PHP date and time usage》, "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" And "Summary of common database operation skills in PHP"

I hope this article will be helpful to everyone in PHP programming.

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!