Encode une chaîne en URL

# urlencode

(PHP 4, PHP 5, PHP 7, PHP 8)

urlencode — Encode une chaîne en URL

### Description

function urlencode(string `$string`): string

Cette fonction est utile lors de l'encodage d'une chaîne de caractères à utiliser dans la partie d'une URL, comme façon simple de passer des variables vers la page suivante.

### Liste de paramètres

`string`

  La chaîne de caractères à encoder.

### Valeurs de retour

Retourne une chaîne dont les caractères non alphanumériques (hormis `-_.`) sont remplacés par des séquences commençant par un caractère pourcentage (`%`), suivi de deux chiffres hexadécimaux. Les espaces sont remplacés par des signes plus (`+`). Ce codage est celui qui est utilisé pour poster des informations dans les formulaires HTML. Le type MIME est `application/x-www-form-urlencoded`. Ce codage est différent de celui spécifié dans la » RFC 3986 (voir rawurlencode()) : pour des raisons historiques, les espaces sont remplacés par des signes plus (`+`).

### Exemples

Exemple #1 Exemple avec urlencode()

    <?php
    $userinput = 'Data123!@-_ +';
    echo "UserInput: $userinput\n";
    echo '<a href="mycgi?foo=', urlencode($userinput), '">';
    ?>

L'exemple ci-dessus va afficher :

    UserInput: Data123!@-_ +
    <a href="mycgi?foo=Data123%21%40-_+%2B">

Exemple #2 Exemple avec urlencode() et htmlentities()

    <?php
    $foo = 'Data123!@-_ +';
    $bar = "Not the same content as $foo";
    echo "foo: $foo\n";
    echo "bar: $bar\n";
    $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
    echo '<a href="mycgi?' . htmlentities($query_string) . '">';
    ?>

L'exemple ci-dessus va afficher :

    foo: Data123!@-_ +
    bar: Not the same content as Data123!@-_ +
    <a href="mycgi?foo=Data123%21%40-_+%2B&amp;bar=Not+the+same+content+as+Data123%21%40-_+%2B">

### Notes

> Note:

> Faites bien attention aux variables qui ressemblent à des entités HTML, comme &amp;, &copy; et &pound;, qui sont analysées par le client web et remplacées par leur valeur. C'est un vrai problème qui a été montré par le W3C depuis longtemps. La référence est ici : » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2.

> PHP supporte le remplacement de séparateur d'arguments par un point-virgule, comme recommandé par le W3C, grâce à la directive arg_separator du fichier php.ini. Malheureusement, la plupart des clients web n'envoient pas leurs données de formulaire avec des points-virgules. Une solution plus portable est d'utiliser `&amp;` à la place de `&` comme séparateur. Il n'y a alors pas à changer la directive arg_separator. Laissez-la à &, mais encodez les URL en utilisant htmlentities() ou htmlspecialchars().

### Voir aussi

- urldecode() - Décode une chaîne encodée URL
- htmlentities() - Convertit tous les caractères éligibles en entités HTML
- rawurlencode() - Encode une chaîne en URL, selon la RFC 3986
- rawurldecode() - Décode une chaîne URL
- » RFC 3986

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open