note 70134 modified in function.parse-url by bobby
| From: | bobby@php.net | Date: | Fri, 06 Oct 2006 17:56:03 +0000 |
| Subject: | note 70134 modified in function.parse-url by bobby | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-118139@lists.php.net to get a copy of this message | ||
With few modifications
/**
* source: http://us2.php.net/manual/en/function.parse-url.php#60237
* Edit the Query portion of an url
*
* @param string $action ethier a "+" or a "-" depending on what
action you want to perform
* @param mixed $var array (+) or string (-)
* @param string $uri the URL to use. if this is left out, it uses
$_SERVER['PHP_SELF']
* @version 1.0.0
*/
function change_query($action, $var = NULL, $uri = NULL) {
if (($action == "+" && !is_array($var)) || ($action ==
"-" && $var == "") || $var == NULL) {
return FALSE;
}
if (is_null($uri)) { //Piece together uri string
$beginning = $_SERVER['PHP_SELF'];
$ending = (isset ($_SERVER['QUERY_STRING'])) ?
$_SERVER['QUERY_STRING'] : '';
} else {
$qstart = strpos($uri, '?');
if ($qstart === false) {
$beginning = $uri; //$ending is '' anyway
$ending = "";
} else {
$beginning = substr($uri, 0, $qstart);
$ending = substr($uri, $qstart);
}
}
$vals = array ();
$ending = str_replace('?', '', $ending);
parse_str($ending, $vals);
switch ($action) {
case '+' :
$vals[$var[0]] = $var[1];
break;
case '-' :
if (isset ($vals[$var])) {
unset ($vals[$var]);
}
break;
default :
break;
}
$params = array();
foreach ($vals as $k => $value) {
$params[] = $k."=".urlencode($value);
}
$result = $beginning . (count($params) ? '?' . implode("&",
$params) : '');
return $result;
}
--was--
With few modifications
/**
* source: http://us2.php.net/manual/en/function.parse-url.php#60237
* Edit the Query portion of an url
*
* @param string $action ethier a "+" or a "-" depending on what
action you want to perform
* @param mixed $var array (+) or string (-)
* @param string $uri the URL to use. if this is left out, it uses
$_SERVER['PHP_SELF']
* @version 1.0.0
*/
function change_query($action, $var = NULL, $uri = NULL) {
if (($action == "+" && !is_array($var)) || ($action == "-" &&
$var == "") || $var == NULL) {
return FALSE;
}
if (is_null($uri)) {
$uri = $_SERVER['REQUEST_URI'];
}
$qstart = strpos($uri, '?');
if ($qstart === false) {
$beginning = $uri; //$ending is '' anyway
$ending = "";
} else {
$beginning = substr($uri, 0, $qstart);
$ending = substr($uri, $qstart);
}
$vals = array ();
$ending = str_replace('?', '', $ending);
parse_str($ending, $vals);
switch($action) {
case '+':
$vals[$var[0]] = $var[1];
break;
break;
case '-':
if (isset($vals[$var])) {
unset($vals[$var]);
}
break;
default:
break;
}
foreach ( $vals as $k=>$value) {
$vals[$k] = urlencode($value);
}
$result = $beginning . (count($vals) ? '?'.implode("&", $vals) :
'');
return $result;
}
http://php.net/manual/en/function.parse-url.php