Swop_segment_url

function swop_segment_url($params = array(), $query = array())
{
	$ci = &get_instance();

	$qstring = $_SERVER['QUERY_STRING'];
	parse_str($qstring, $parts);
	if ( ! is_array($params))
	{ 
		$params = array($params); 
	}

	$p = $params + array_splice($ci->uri->segment_array(), 0);
	ksort($p);
	$query = $query + array_splice($parts, 0);
	foreach($query as $k => $v)
	{
		if($v == '')
		{
			unset($query[$k]);
		}
	}
	$q = '';
	if( ! empty($query)) { $q = '?'.http_build_query($query); }
	return site_url($p).'/'.$q;
}

Short URL for this post: http://tmblr.co/Z3DI-x8_fb2N