Maison > Article > développement back-end > Une brève discussion sur le code source PHP vingt-trois : à propos de la fonction urlencode
Cet article présente principalement le code source PHP 23 : concernant la fonction urlencode, elle a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Une brève présentation. le code source PHP Vingt-trois : Concernant la fonction urlencode
Je n'ai pas lu le code source de PHP depuis un moment. Récemment, j'ai lu les livres que j'ai achetés auparavant. Certains des livres ont été lus. une fois, mais un an plus tard, les choses sont différentes. Feeling
La fonction urlencode est souvent rencontrée lors du processus de développement. Elle agit sur l'encodage des chaînes et est utilisée dans la partie requête de l'URL. La fonction consiste à encoder la chaîne URL
string. urlencode ( string str )
Renvoie une chaîne dans laquelle tous les caractères non alphanumériques sauf -_ seront remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, et espaces Codés sous forme de signe plus (+). Cet encodage est le même que l'encodage des données POST du formulaire WWW et le même encodage que le type de média application/x-www-form-urlencoded. Pour des raisons historiques, ce codage diffère du codage RFC1738 (voir rawurlencode()) dans les espaces de codage sous forme de signes plus (+).
Dans la ligne 493 du fichier standard/url.c, vous pouvez voir l'implémentation de cette fonction
out_str = php_url_encode(in_str, in_str_len, &out_str_len);RETURN_STRINGL(out_str, out_str_len, 0);En regardant la fonction php_url_encode, j'ai longtemps lutté car elle a un # ifndef CHARSET_EBCDIC Pour juger de la compilation, j'ai toujours considéré #ifndef comme #ifdef, ce qui rend la compréhension étrange La fonction php_url_encode est un processus consistant à parcourir la chaîne entière et à remplacer chaque caractère
For. Tous les caractères non alphanumériques, à l'exception de -_. seront remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux
Il y a un traitement pour le codage EBCDIC au moment de la compilation
if (c == ' ') {
*to++ = '+';
}
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!