ホームページ  >  記事  >  バックエンド開発  >  PHPのURLエンコード関数urlencode()の解析について

PHPのURLエンコード関数urlencode()の解析について

不言
不言オリジナル
2018-06-21 11:43:052435ブラウズ

この記事では、主に PHP の URL エンコード関数の分析を紹介します。これには、必要な参考値があります。

URLEncode: を参照してください。 Web ページの URL 内の中国語の文字をエンコードして変換する方法。最も一般的な方法は、Baidu や Google などの検索エンジンに中国語のクエリが入力されたときに、エンコードされた Web ページの URL を生成することです。

URLEncode には通常 2 つの方法があり、1 つは GB2312 に基づく従来のエンコード (Baidu、Yisou などで使用)、もう 1 つは UTF-8 エンコードに基づく (Google、Yahoo、等。)。
このツールは、エンコードとデコードの 2 つのメソッドをそれぞれ実装します:
中文-> GB2312 のエンコード ->
中文-> UTF-8 のエンコード## Html での URLEncode:
GB2312 としてエンコードされた HTML ファイル内: http://s.php.cn/中文.rar -> ブラウザは自動的に http://s.php.cn /� に変換します。 ����.rar
注: Firefox はデフォルトで URL を UTF-8 エンコードで送信するため、GB2312 エンコードの中国語 URL をサポートしていませんが、ftp:// プロトコルは問題なく使用できたと思います。これは Firefox のバグと考えるべきです。
UTF-8 としてエンコードされた HTML ファイル内: http://s.php.cn/中文.rar -> ブラウザは自動的に http://s.php.cn/中文.rar に変換します。
PHP での URLEncode:

<?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"; //中文-_. 
?>

「-_.」を除くすべての非英数字は、パーセント記号「%」とそれに続く 2 つの 16 進数に置き換えられます。

urlencode と rawurlencode の違い: urlencode はスペースをプラス記号 " " としてエンコードし、rawurlencode はスペースをプラス記号 " " としてエンコードします。
UTF-8 エンコードを使用する場合は、2 つの方法があります:
1. ファイルを UTF-8 ファイルとして保存し、urlencode または rawurlencode を直接使用します。
2. 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 
?>

例: JavaScript での

<?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:

例: Chinese-_
encodeURI ではありません。次の文字を正しくエンコードします:「:」、「/」、「;」、「?」、「@」およびその他の特殊文字。
例: http://s.php.cn/中文.rarhttp://s.jb51.net/中文.rar

上記がこの記事の全内容です。ヘルプ、その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

PHP は WeChat パブリック プラットフォームのエンタープライズ アカウント検証インターフェイスを実装します

多項式導関数を見つけるための PHP 関数コードについて

以上がPHPのURLエンコード関数urlencode()の解析についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。