Maison  >  Article  >  développement back-end  >  À propos de l'analyse de la fonction d'encodage d'URL urlencode() en php

À propos de l'analyse de la fonction d'encodage d'URL urlencode() en php

不言
不言original
2018-06-21 11:43:052436parcourir

Cet article présente principalement l'analyse de la fonction d'encodage d'URL urlencode() en PHP. Il 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

URLEncode : fait référence. Méthode de codage et de conversion des caractères chinois dans les URL de pages Web. La méthode la plus courante consiste à générer une URL de page Web codée lorsqu'une requête chinoise est saisie dans des moteurs de recherche tels que Baidu et Google.

Il existe généralement deux méthodes d'URLEncode, l'une est l'encodage traditionnel basé sur GB2312 (utilisé par Baidu, Yisou, etc.), et l'autre est basée sur l'encodage UTF-8 (utilisé par Google, Yahoo, etc.).
Cet outil implémente respectivement deux méthodes d'encodage et de décodage :
Chinois-> Encodage de GB2312 -> %D6%D0%CE%C4
Chinois-> %E4%B8%AD%E6%96%87
URLEncode en HTML :
Dans un fichier HTML codé en GB2312 : http://s.php.cn/中文.rar -> > http://s.php.cn/%D6%D0%CE%C4.rar
Remarque : Firefox ne prend pas en charge l'URL chinoise de l'encodage GB2312 car sa valeur par défaut est UTF-8. L'URL est encodée et envoyée , mais le protocole ftp:// est OK. Je l'ai essayé. Je pense que cela devrait être considéré comme un bug dans Firefox.
Dans le fichier html codé en UTF-8 : http://s.php.cn/中文.rar -> Le navigateur se convertit automatiquement en -> B8%AD%E6%96%87.rar
URLEncode en PHP :

<?php 
//GB2312的Encode 
echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ 
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 
echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20 
echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 
?>

Tous les caractères non alphanumériques sauf "-_" seront remplacés par des signes de pourcentage "%" suivi de deux chiffres hexadécimaux.
La différence entre urlencode et rawurlencode : urlencode encode les espaces sous la forme d'un signe plus "+", et rawurlencode encode les espaces sous la forme d'un signe plus "%20".
Si vous souhaitez utiliser l'encodage UTF-8, il existe deux méthodes :
1. Enregistrez le fichier en tant que fichier UTF-8 et utilisez directement urlencode ou rawurlencode.
2. Utilisez la fonction mb_convert_encoding :

<?php 
$url = &#39;http://s.php.cn/中文.rar&#39;; 
echo urlencode(mb_convert_encoding($url, &#39;utf-8&#39;, &#39;gb2312&#39;))."\n"; 
echo rawurlencode(mb_convert_encoding($url, &#39;utf-8&#39;, &#39;gb2312&#39;))."\n"; 
//http%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar 
?>

Exemple :

<?php 
function parseurl($url="") 
{ 
$url = rawurlencode(mb_convert_encoding($url, &#39;gb2312&#39;, &#39;utf-8&#39;)); 
$a = array("%3A", "%2F", "%40"); 
$b = array(":", "/", "@"); 
$url = str_replace($a, $b, $url); 
return $url; 
} 
$url="ftp://ud03:password@s.php.cn/中文/中文.rar"; 
echo parseurl($url); 
//ftp://ud03:password@s.php.cn/%D6%D0%CE%C4/%D6%D0%CE%C4.rar 
?>

URLEncode en JavaScript :
Par exemple : %E4%B8%AD%E6%96 % 87-_.%20%E4%B8%AD%E6%96%87-_.%20
encodeURI n'encode pas les caractères suivants : ":", "/", ";", "?" , " @" et autres caractères spéciaux.
Par exemple : http://s.php.cn/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6 % 96%87.rar

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

PHP implémente l'interface de vérification de compte d'entreprise de la plateforme publique WeChat

À propos du code de fonction pour trouver des dérivées polynomiales en PHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn