PHP Code:
/**
* Retrieve $_GET params filtered by string or array exclusion list
* @author Bobby Easland
* @version 1.0
* @param mixed $exclude Exclusion list as either string or array
* @param boolean $asString Flag to either return as string or array
* @return mixed
*/
function getParamsFiltered($exclude, $asString = true){
if ( empty($_GET) ){
return ( $asString === true ) ? '' : array();
}
switch(gettype($exclude)){
case 'string':
if ( !array_key_exists($exclude, $_GET) ){
return ( $asString === true ) ? implodeAssoc($_GET) : $_GET;
}
$return = array();
foreach ( array_keys($_GET) as $key ){
if ( $key == $exclude ) continue;
$return[$key] = $_GET[$key];
}
if ( count($return) < 1 ){
return ( $asString === true ) ? '' : array();
}
return ( $asString === true ) ? implodeAssoc($return) : $return;
break;
case 'array':
$diff = array_diff(array_keys($_GET), $exclude);
if ( count($diff) < 1 ){
return ( $asString === true ) ? '' : array();
}
$return = array();
foreach( array_values($diff) as $key ){
$return[$key] = $_GET[$key];
}
return ( $asString === true ) ? implodeAssoc($return) : $return;
break;
default:
return ( $asString === true ) ? '' : array();
break;
}
} # end function
/**
* Implode array associatively, back port of simple array http_build_query
* @author Bobby Easland
* @version 1.0
* @param array $array Associative array to be imploded
* @param string $innerGlue Inner glue
* @param string $outerGlue Outer glue
* @return string
*/
function implodeAssoc($array, $innerGlue='=', $outerGlue='&') {
if ( !is_array($array) ){
return '';
}
$output = array();
foreach( $array as $key => $item ){
$output[] = trim($key) . $innerGlue . trim($item);
}
return implode($outerGlue, $output);
} # end function
To use the code save the functions in either a library or other common included file. Here is an example of use:
PHP Code:
/**
* Test URL = http://www.domain.com/script.php?var1=123&var2=456&var3=789
*/
// String input, single filter
echo getParamsFiltered('var1'); // Outputs var2=456&var3=789
// Array input, single filter
echo getParamsFiltered(array('var1')); // Outputs var2=456&var3=789
// Array input, multiple filters
echo getParamsFiltered(array('var1', 'var3')); // Outputs var2=456
Enjoy!
Bobby
Bookmarks