Return to Snippet

Revision: 14814
at June 12, 2009 17:00 by caioariede


Updated Code
/**
 * Fetch an item from a global array.
 *
 * @param   array    array to search
 * @param   string   key to find
 * @param   mixed    default value
 * @param   boolean  XSS clean the value
 * @return  mixed
 */
protected function search_array($array, $key, $default = NULL, $xss_clean = FALSE)
{
	if ($key === array())
		return $array;

	//$key = 'option[min][max][x]';

	// patch: start
	if (preg_match_all('!(?:\[([^]]+)\])!', $key, $subkeys))
	{
		list(, $subkeys) = $subkeys;
		array_unshift($subkeys, substr($key, 0, strpos($key, '[')));
		foreach ($subkeys as $key)
		{
			if ( ! isset($array[$key]))
				return $default;
			$array = $array[$key];
		}
		return $array;
	}
	// end

	if ( ! isset($array[$key]))
		return $default;

	// Get the value
	$value = $array[$key];

	if ($this->use_xss_clean === FALSE AND $xss_clean === TRUE)
	{
		// XSS clean the value
		$value = $this->xss_clean($value);
	}

	return $value;
}

Revision: 14813
at June 12, 2009 16:54 by caioariede


Initial Code
/**
 * Fetch an item from a global array.
 *
 * @param   array    array to search
 * @param   string   key to find
 * @param   mixed    default value
 * @param   boolean  XSS clean the value
 * @return  mixed
 */
protected function search_array($array, $key, $default = NULL, $xss_clean = FALSE)
{
	if ($key === array())
		return $array;

	// patch: start
	if (preg_match('!(^\w+)(?:\[([^]]+)\])!', $key, $subkeys))
	{
		array_shift($subkeys);
		foreach ($subkeys as $key)
		{
			if ( ! isset($array[$key]))
				return $default;
			$array = $array[$key];
		}
		return $array;
	}
	// end

	if ( ! isset($array[$key]))
		return $default;

	// Get the value
	$value = $array[$key];

	if ($this->use_xss_clean === FALSE AND $xss_clean === TRUE)
	{
		// XSS clean the value
		$value = $this->xss_clean($value);
	}

	return $value;
}

Initial URL


Initial Description


Initial Title
Kohana Patch: Input library problem with [ and ]

Initial Tags


Initial Language
PHP