Shagshag
6/24/2013 - 10:08 AM

Do the same than parse_str without max_input_vars limitation

Do the same than parse_str without max_input_vars limitation

<?php

/**
 * do the same than parse_str without max_input_vars limitation
 * @param $string array string to parse
 * @return  array query parsed
 **/
function my_parse_str($string) {
  $result = array();
	// find the pairs "name=value"
	$pairs = explode('&', $string);
	$toEvaluate = ''; // we will do a big eval() at the end not pretty but simplier
	foreach($pairs as $pair) {
		list($name, $value) = explode('=', $pair, 2);
		$name = urldecode($name);
		if (strpos($name, '[') !== false) { // name is an array
			$name = preg_replace('|\[|', '][', $name, 1);
			$name = str_replace(array('\'', '[', ']'), array('\\\'', '[\'', '\']'), $name);
			$toEvaluate .= '$result[\''.$name.' = '.urldecode($value).'; '; // $result['na']['me'] = 'value';				
		}
		else {
			$name = str_replace('\'', '\\\'', $name);
			$toEvaluate .= '$result[\''.$name.'\'] = '.urldecode($value).'; '; // $result['name'] = 'value';
		}
	}
	eval($toEvaluate);
	return $result;
}

$array = my_parse_str($query);
?>