All pastes #632073 Raw Edit

Untitled

public php v1 · immutable
#632073 ·published 2007-07-24 15:56 UTC
rendered paste body
/** * Construit une URL en reprenant l'URL actuelle et certains de ses paramètres GET. * * si $keep est un array, seuls les éléments de $keep sont conservés<br> * si $remove est un array, les éléments de $remove sont enlevés<br> * si $add est un array( clef => valeur ), ces paramètres sont ajoutés à l'URL<br> * Exemple : * url actuelle : truc.php?a=1&b=2 * url_from_get_vars( array( 'a' ), false, array( 'c' => 3 ) ) * 	=> truc.php?a=1&c=3 * url_from_get_vars( false, array( 'a' ), array( 'c' => 3 ) ) *	=> truc.php?b=2&c=3 */function url_from_get_vars( $keep=false, $remove=false, $add = array() ){	$params = array();	foreach($_GET as $key => $value) {		if ((!$keep || in_array($key, $keep)) && !($remove && in_array($key, $remove))) {			$params[] = $key.'='.urlencode( $value );		}	}	foreach($add as $key => $value) {		$params[] = $key.'='.urlencode( $value );	}	return $_SERVER['PHP_SELF'].'?'.implode( '&', $params );}/** * Construit un tableau contenant PATH_INFO splité a partir ses slashes qu'il contient. * * Par exemple, si j'ai /mod/page/content. L'array retourné sera array('mod','page','content') * * @param string $add Ajoute des données supplémentaire au tableau retourné. */function url_get_path($add=array(),$keep=array(),$remove=array()) {	if (isset($_SERVER['ORIG_PATH_INFO'])) {		$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];	} elseif (!isset($_SERVER['ORIG_PATH_INFO']) && !isset($_SERVER['PATH_INFO'])) {		$_SERVER['PATH_INFO'] = '/';	}	$_SERVER['PATH_INFO'] = substr($_SERVER['PATH_INFO'],1,($_SERVER['PATH_INFO'][strlen($_SERVER['PATH_INFO'])-1] == '/') ? -1 : strlen($_SERVER['PATH_INFO'])-1);	$path = explode('/',$_SERVER['PATH_INFO']);	if ($keep || $remove) {		$opath = $path;		$path = array();		foreach ($opath as $value) {			if ((!$keep || in_array($value,$keep)) && !($remove && in_array($value, $remove))) {				$path[] = $value;			}		}		unset($opath);	}	if (!empty($add)) {		if (!is_array($add)) {			$path[] = $add;		} else {			while (!empty($add)) {				$path[] = array_shift($add);			}		}	}	return $path;}/** * Contruit quelque chose ressemblant au contenu de PATH_INFO. * Peut récupérer l'array retourné par url_get_path * * @see url_get_path() */function build_url_path() {	$args = func_get_args();	$arg = array_shift($args);	if (is_array($arg)) {		$_ = array_shift($arg);		$args = $arg;		$arg = $_;	}	$url = get_param('baseurl').'/index.php/'.$arg.'/';	if (count($args) > 0 && !empty($arg)) {		$url.= implode('/',$args);	}	return $url;}