note 98469 deleted from function.parse-url by danbrown
| From: | danbrown@php.net | Date: | Thu, 17 Jun 2010 16:04:29 +0000 |
| Subject: | note 98469 deleted from function.parse-url by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-170209@lists.php.net to get a copy of this message | ||
Note Submitter: info at 26design dot com
----
Regarding the modify_url function above, I updated it slightly in order to include the ability to
add a new key/value pair, in case nothing was there before.
Original description from solenoid at example dot com (see #97496 above): "Here's a piece
of code that modifies, replaces or removes the url query. This can typically used in paging
situations where there are more parameters than the page."
Modified version:
<?php
function modify_url($mod)
{
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$query = explode("&", $_SERVER['QUERY_STRING']);
// modify/delete data
foreach($query as $q)
{
list($key, $value) = explode("=", $q);
if(array_key_exists($key, $mod))
{
if($mod[$key])
{
$url = preg_replace('/'.$key.'='.$value.'/',
$key.'='.$mod[$key], $url);
}
else
{
$url = preg_replace('/&?'.$key.'='.$value.'/',
'', $url);
}
}
}
// add new data
foreach($mod as $key => $value)
{
// updated 06/15/2010
if ( $value )
{
if($query[0] && !preg_match('/'.$key.'=/', $url))
{
$url .= '&'.$key.'='.$value;
}
else if (!$query[0])
{
$url .= '?'.$key.'='.$value;
}
}
}
return $url;
}
// page url: "http://www.example.com/page.php?p=5&show=list&style=23"
$url = modify_url(array('p' => 4, 'show' => 'column'));
// $url = "http://www.example.com/page.php?p=4&show=column&style=23"
?>