Version: 1.0
Type: Function
Category: HTTP
License: GNU General Public License
Description: A function to add or replace the value of a particular query parameter. It assumes typical &-separated parameters.
— Parameters —
$query The query string, still url-encoded.
$param The query parameter to change the value of. Not url-encoded.
$value The new value for the parameter. Not url-encoded.
Returns the new query string, with parameter names and values url-encoded.
/** * Add or replace the value of a particular query parameter. * Assumes typical &-separated parameters. Case-sensitive. * * $query The query string, still url-encoded. * $param The query parameter to change the value of. Not url-encoded. * $value The new value for the parameter. Not url-encoded. * Returns the new query string, with parameter names and values url-encoded. */ function ReplaceQueryValue ($query, $param, $value) { // Prepend & so all parameters are delimited by &...= if (!empty($query)) $query = '&' . $query; $param = '&' . urlencode($param) . '='; $value = urlencode($value); // Find occurance of parameter $index = strpos ($query, $param); if ($index === false) { // Not present. Append param/value. $query .= $param . $value; } else { // Delimit & replace value part. $valstart = $index + strlen ($param); $valend = strpos ($query, '&', $valstart); if ($valend === false) $valend = strlen ($query); $query = substr_replace ($query, $value, $valstart, $valend - $valstart); } return substr ($query, 1); }