Open In App

How to Convert Query String to an Array in PHP?

Last Updated : 20 Aug, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In this article, we will see how to convert a query string to an array in PHP. The Query String is the part of the URL that starts after the question mark(?).

Examples:

Input: str = "company=GeeksforGeeks&address=Noida&mobile=9876543210"
Output: Array (
[company] => GeeksforGeeks
[address] => noida
[mobile] => 9876543210
)
Input: str = "name=xyz&language=english&age=23&education=btech"
Output: Array(
[name] => xyz
[language] => english
[age] => 23
[education] => btech
)

Below are the methods to convert a query string to an array:

Using parse_str() Function

The parse_str() function parses a query string into variables. The string passed to this function for parsing is in the format of a query string passed via a URL.

Syntax:

void parse_str($string, $array)

Example 1: This example uses parse_str() function to convert the query string into the array variable.

PHP
<?php 

// Query String 
$query = "name=xyz&address=noida&mobile=9876543210"; 

// Parses a query string into variables 
parse_str($query, $res); 

// Print the result 
print_r($res); 

?>

Output
Array
(
    [name] => xyz
    [address] => noida
    [mobile] => 9876543210
)

Example 2: This example uses parse_str() function to convert the query string into the array and store into $arr variable.

Using $_GET Method

The GET method sent the data as URL parameters that are usually strings of name and value pairs separated by ampersands (&). We can display the get data using print_r() function.

Example: This example uses $_GET method to convert the query string to the array.

PHP
<?php 

if (!empty($_GET)) { 
    print_r($_GET); 
} 
else { 
    echo "No GET data passed!"; 
} 

?>

Output:

querystring

Using explode() and Custom Parsing

For a manual approach, you can use explode() to split the query string and then parse it.

Example: Manually parsing the query string using explode().

PHP
<?php 
// Query String 
$query = "name=xyz&address=noida&mobile=9876543210";

// Split the query string into key-value pairs
$pairs = explode('&', $query);

// Initialize an empty array
$result = array();

// Loop through each pair
foreach ($pairs as $pair) {
  
    // Split the pair into key and value
    list($key, $value) = explode('=', $pair);
  
    // Add the key-value pair to the result array
    $result[$key] = $value;
}

print_r($result); 
?>

Output:

Array
(
[name] => xyz
[address] => noida
[mobile] => 9876543210
)

Using http_build_query and parse_url

This PHP method converts a query string to an array using parse_url to extract query parameters and parse_str to convert them into an associative array.

Example: This example shows the implementation of the above-mentioned approach.

PHP
<?php
function queryStringToArray($queryString) {
    // Parse the query string into its components
    $parsedUrl = parse_url('?' . $queryString);

    // Use parse_str to convert query string into an associative array
    $resultArray = [];
    if (isset($parsedUrl['query'])) {
        parse_str($parsedUrl['query'], $resultArray);
    }

    return $resultArray;
}

// Example usage
$queryString = "name=Geek&age=25&city=Noida";
$resultArray = queryStringToArray($queryString);

print_r($resultArray);
?>

Output
Array
(
    [name] => Geek
    [age] => 25
    [city] => Noida
)

Using json_decode() with json_encode()

Another interesting approach to convert a query string to an array is by converting the query string to JSON format first and then decoding it into an associative array using json_decode().

Example: This approach adds another layer of versatility to the task of converting a query string into an associative array in PHP, utilizing JSON encoding and decoding for accurate and efficient conversion.

PHP
<?php
function queryStringToArray($queryString)
{
    // Convert query string to JSON format
    $json = json_encode(
        array_reduce(
            explode("&", $queryString),
            function ($result, $item) {
                list($key, $value) = explode("=", $item);
                $result[$key] = urldecode($value);
                return $result;
            },
            []
        )
    );

    // Decode JSON to associative array
    $array = json_decode($json, true);

    return $array;
}

$queryString1 = "company=GeeksforGeeks&Address=Noida&Phone=9876543210";

print_r(queryStringToArray($queryString1));

?>

Output
Array
(
    [company] => GeeksforGeeks
    [Address] => Noida
    [Phone] => 9876543210
)

Using preg_match_all and Regular Expressions

This approach uses regular expressions with preg_match_all to match all key-value pairs in the query string and then parse them into an associative array.

Example: This example demonstrates how to convert a query string to an array using preg_match_all:

PHP
<?php
// Example query string
$queryString = "name=xyz&language=english&age=23&education=btech";

// Initialize an array to store matches
$result = [];

// Use regular expression to match key-value pairs
preg_match_all('/([^&=]+)=([^&]*)/', $queryString, $matches);

// Loop through the matches and populate the result array
for ($i = 0; $i < count($matches[1]); $i++) {
    $key = urldecode($matches[1][$i]);
    $value = urldecode($matches[2][$i]);
    $result[$key] = $value;
}

print_r($result);
?>

Output
Array
(
    [name] => xyz
    [language] => english
    [age] => 23
    [education] => btech
)

Next Article

Similar Reads