note 40352 added to function.parse-url
| From: | osfist at yahoo dot com | Date: | Mon, 01 Mar 2004 04:11:47 +0000 |
| Subject: | note 40352 added to function.parse-url | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-66014@lists.php.net to get a copy of this message | ||
Functions to edit a url query key and its value.
You can also add a new query key and its value.
I gathered and modified useful functions for my code.
It works fine as you see at the test result.
<?php
function get_query_edited_url($url, $arg, $val) {
$parsed_url = parse_url($url);
parse_str($parsed_url['query'],$url_query);
$url_query[$arg] = $val;
$parsed_url['query'] = http_implode($url_query);
$url = glue_url($parsed_url);
return $url;
}
function http_implode($arrayInput) {
if (! is_array($arrayInput))
return false;
$url_query="";
foreach ($arrayInput as $key=>$value) {
$url_query .=(strlen($url_query)>1)?'&':"";
$url_query .= urlencode($key).'='.urlencode($value);
}
return $url_query;
}
function glue_url($parsed) {
if (! is_array($parsed))
return false;
$url = $parsed['scheme'] ? $parsed['scheme'].':'
.((strtolower($parsed['scheme']) == 'mailto') ?
'':'//'): '';
$url .= $parsed['user'] ? $parsed['user']
.($parsed['pass']?
':'.$parsed['pass']:'').'@':'';
$url .= $parsed['host'] ? $parsed['host'] : '';
$url .= $parsed['port'] ? ':'.$parsed['port'] : '';
$url .= $parsed['path'] ? $parsed['path'] : '';
$url .= $parsed['query'] ? '?'.$parsed['query'] : '';
$url .= $parsed['fragment'] ? '#'.$parsed['fragment'] :
'';
return $url;
}
/* Test & Output
$url =
"http://user:pass@host/path?arg1=value&arg2=myval2#anchor";
print "<br>0:".$url;
print "<br>1:".get_query_edited_url($url,'arg1','CHANGED');
//Arg1
print "<br>2:".get_query_edited_url($url,'arg2','CHANGED');
//Arg2
print "<br>3:".get_query_edited_url($url,'arg3','NEW'); //New
Argument
*/
// Output
//http://user:pass@host/path?arg=value&arg2=myval2#anchor
//http://user:pass@host/path?arg=value&arg2=CHANGED#anchor
//http://user:pass@host/path?arg=CHANGED&arg2=myval2#anchor
?>
----
Manual Page -- http://www.php.net/manual/en/function.parse-url.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+40352
Delete -- http://master.php.net/manage/user-notes.php?action=delete+40352&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+40352&report=yes
Search -- http://master.php.net/manage/user-notes.php