PHP 5.4.31 Released


(PECL pecl_http >= 0.21.0)

http_build_urlConstruit une URL


string http_build_url ([ mixed $url [, mixed $parts [, int $flags = HTTP_URL_REPLACE [, array &$new_url ]]]] )

Construit une URL.

Les parties de la seconde URL seront ajoutées dans la première en fonction des arguments.

Liste de paramètres


partie(s) d'une URL sous la forme d'une chaîne ou un tableau associatif comme retourné par la fonction parse_url()


la même chose que le premier argument


un masque de constantes HTTP_URL ; HTTP_URL_REPLACE est la valeur par défaut


si défini, il sera ajouté avec les parties de l'URL composée comme retournée par la fonction parse_url()

Valeurs de retour

Retourne la nouvelle URL sous la forme d'une chaîne en cas de succès ou FALSE si une erreur survient.


Exemple #1 Exemple avec http_build_url()

echo http_build_url("",
"scheme" => "ftp",
"host" => "",
"path" => "files/current/",
"query" => "a=c"

L'exemple ci-dessus va afficher :

Voir aussi

add a note add a note

User Contributed Notes 5 notes

Ant P.
4 years ago
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.
anon at example dot com
5 months ago
If you need to access the url to the current script you should examine $_SERVER['REQUEST_URI'].

Using an undocumented feature that gives the same functionality as existing PHP library calls is reckless.
randyg at ernieball dot com
2 years ago
Although I've never used this function, based on the documentation it seems that the above code should also include the following:

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 );
michael at REMOVE-THIS-PART dot muryn dot name
3 months ago
To those that want to use http_build_url() without parameters to get the canonical page URL, be aware that this function seem to consider the equivalent of SCRIPT_NAME for the path instead of REQUEST_URI.

For example, if /example serve info.php (you can do this with mod_rewrite in Apache for example), while accessing this function will return instead of the URL the user see.  This could lead to obvious problems if you build other URL from this.

So like another comment say, it is reckless to use that undocumented feature.  Instead here is what I suggest:

function get_request_url()
get_request_scheme() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

    return (isset(
$_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
Yzmir Ramirez
1 year ago
So you used parse_url(...) and looking to put it back together and seeing if this function will do? 

You may have seen some glue* functions that will rebuild the url with the parts that you have.  Try this:


= parse_url($uri);
/* do your magic here on $parts */
$uri = http_build_url('', $parts);

Notice the first param is empty string.  It also works with NULL and array() as well.
To Top