(PHP 4, PHP 5)
urlencode — Encode une chaîne en URL
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.
La chaîne de caractères à encoder.
Retourne une chaîne dont lescaractères non alpha-numé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 1738 (voir rawurlencode() ) : pour des raisons historiques, les espaces sont remplacés par des signes plus (+ ).
Exemple 2753. Exemple avec urlencode()
<?php
echo
'<a href="mycgi?foo='
,
urlencode
(
$userinput
),
'">'
;
?>
Exemple 2754. Exemple avec urlencode() et htmlentities()
<?php
$query_string
=
'foo='
.
urlencode
(
$foo
) .
'&bar='
.
urlencode
(
$bar
);
echo
'<a href="mycgi?'
.
htmlentities
(
$query_string
) .
'">'
;
?>
Note: Faites bien attention aux variables qui ressemblent à des entités HTML, comme &, © et £, 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 & à la place de & comme séparateur. Vous n'avez alors pas à changer la directive arg_separator . Laissez-la à &, mais encodez vos URL en utilisant htmlentities() ou htmlspecialchars() .
urldecode() |
htmlentities() |
rawurlencode() |
rawurldecode() |