Lors de la construction d'une URL à partir d'une chaîne variable, les développeurs disposent de deux options d'encodage : urlencode() et rawurlencode(). Cet article approfondit les distinctions essentielles entre les deux fonctions pour fournir des conseils sur leur utilisation appropriée.
rawurlencode : une chaîne transformée avec l'adhésion RFC
rawurlencode est conforme aux spécifications décrit dans la RFC 1738 (pré-PHP 5.3.0) et la RFC 3986 (post-PHP 5.3.0). Il remplace les caractères non alphanumériques par " " et deux chiffres hexadécimaux. Cette méthode de codage protège les caractères littéraux contre les interprétations erronées en tant que délimiteurs d'URL et protège les URL contre les conversions de caractères pouvant survenir lors de la transmission.
urlencode : une dérogation à la RFC avec le codage de signe plus
urlencode, en revanche, s'écarte de la conformité RFC d'une manière spécifique : il code les espaces sous forme de signes " " au lieu de " , » une technique de codage cohérente avec la publication de données à partir d'un formulaire WWW.
Quand utiliser lequel
Le choix approprié entre urlencode et rawurlencode dépend de l'objectif visé. Si l’interopérabilité avec d’autres systèmes est primordiale, le rawurlencode apparaît comme l’option privilégiée. Cependant, pour les systèmes existants qui attendent des chaînes de requête codées sous forme de formulaire où les espaces sont codés comme " " plutôt que " , " urlencode reste le choix nécessaire.
Nuances RFC
Il convient de noter la distinction subtile entre RFC 1738 et RFC 3986 dans le contexte du rawurlencode. Avant PHP 5.3, le rawurlencode était aligné sur la RFC 1738, qui nécessitait l'encodage du caractère tilde (~). Cependant, à partir de PHP 5.3, la fonction adhère à la RFC 3986, qui juge le codage tilde inutile.
Considérations supplémentaires
La RFC 2396 fournit des informations supplémentaires sur la syntaxe URI valide. Surtout, il identifie " " comme un caractère réservé dans une chaîne de requête, nécessitant son codage selon la RFC 3986. Par conséquent, le rawurlencode reste la méthode de codage préférée lors de la conformité à la RFC 2396.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!