phparraysquery-stringstring-parsing

How to parse a URL's querystring into an array?


STARTING ARRAY

Array
 (
[0] => Array
    (
        [0] => /searchnew.aspx?Make=Toyota&Model=Tundra&Trim=CrewMax+5.7L+V8+6-Spd+AT+SR5&st=Price+asc
        [1] => 19
    )
 )

I have been struggling to break down this array for the past couple days now. I have found a few useful functions to extract the strings I need when a start and end point are defined, however, I can't see that being good for long term use. Basically I'm trying to take the string relative to [0], and extract the strings following "Model=" and "Trim=", in hopes to have array like this:

Array
(
[0] => Array
(
    [0] => Tundra ***model***
    [1] => CrewMax+5.7L+V8+6-Spd+AT+SR5 ***trim***
    [2] => 19
 )
)

I'm getting this information fed through an api, so coming up with a dynamic solution is my biggest challenge. I realize this a big question, but is there a better/less hacky way of approaching this problem?


Solution

  • parse_url() will get you the query string and parse_str() parses the variables from that:

    $q = parse_url($array[0][0], PHP_URL_QUERY);
    parse_str($q, $result);
    
    print_r($result);
    

    Yields:

    Array
    (
        [Make] => Toyota
        [Model] => Tundra
        [Trim] => CrewMax 5.7L V8 6-Spd AT SR5
        [st] => Price asc
    )
    

    Now just echo $result['Model'] etc...