This function has a useful undocumented feature - the defaults are set in such a way that calling it with no parameters returns the full URL of the page being accessed.
http_build_url
(PECL pecl_http >= 0.21.0)
http_build_url — Build a URL
Description
string http_build_url
([ mixed
$url
[, mixed $parts
[, int $flags = HTTP_URL_REPLACE
[, array &$new_url
]]]] )Build a URL.
The parts of the second URL will be merged into the first according to the flags argument.
Parameters
-
url -
(part(s) of) an URL in form of a string or associative array like parse_url() returns
-
parts -
same as the first argument
-
flags -
a bitmask of binary or'ed HTTP_URL constants;
HTTP_URL_REPLACEis the default -
new_url -
if set, it will be filled with the parts of the composed url like parse_url() would return
Return Values
Returns the new URL as string on success or FALSE on failure.
Examples
Example #1 A http_build_url() example
<?php
echo http_build_url("http://user@www.example.com/pub/index.php?a=b#files",
array(
"scheme" => "ftp",
"host" => "ftp.example.com",
"path" => "files/current/",
"query" => "a=c"
),
HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY | HTTP_URL_STRIP_FRAGMENT
);
?>
The above example will output:
ftp://ftp.example.com/pub/files/current/?a=c
Ant P. ¶
3 years ago
randyg at ernieball dot com ¶
1 year ago
Although I've never used this function, based on the documentation it seems that the above code should also include the following:
<?php
if ( ! is_array( $url ) ) // Added - Randy
// Parse the original URL
$parse_url = parse_url($url);
// allow parts to be a url Added - Randy
if ( ! is_array( $parts ) )
$parts = parse_url( $parts );
?>
