/** * Parse the parameters in a string and return an array. Duplicates are * converted into indexed arrays. * * // Parsed: array('a' => '1', 'b' => '2', 'c' => '3') * $params = OAuth1::parse_params('a=1,b=2,c=3'); * * // Parsed: array('a' => array('1', '2'), 'c' => '3') * $params = OAuth1::parse_params('a=1,a=2,c=3'); * * @param string parameter string * @return array */ public static function parse_params($params) { // Split the parameters by & $params = explode('&', trim($params)); // Create an array of parsed parameters $parsed = array(); foreach ($params as $param) { // Split the parameter into name and value list($name, $value) = explode('=', $param, 2); // Decode the name and value $name = OAuth1::urldecode($name); $value = OAuth1::urldecode($value); if (isset($parsed[$name])) { if (!is_array($parsed[$name])) { // Convert the parameter to an array $parsed[$name] = array($parsed[$name]); } // Add a new duplicate parameter $parsed[$name][] = $value; } else { // Add a new parameter $parsed[$name] = $value; } } return $parsed; }