ホームページ  >  記事  >  バックエンド開発  >  PHP の urlencode() URL エンコード関数の簡単な分析_PHP チュートリアル

PHP の urlencode() URL エンコード関数の簡単な分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:25:14744ブラウズ

一般に URLEncoding には 2 つの方法があり、1 つは GB2312 に基づく従来のエンコード (Baidu、Yisou などで使用)、もう 1 つは UTF-8 エンコード (Google、Yahoo などで使用) に基づくものです。

このツールは、エンコードとデコードの 2 つのメソッドをそれぞれ実装します:

GB2312 のエンコード -> %D6%D0%CE%C4

UTF-8 のエンコード -> %E4 % B8%AD%E6%96%87

HTML での URLEncode:

GB2312 としてエンコードされた HTML ファイル内: http://s.jb51.net/中文.rar -> ブラウザは自動的に -> http に変換します。 ://s.jb51.net/%D6%D0%CE%C4.rar

注: Firefox はデフォルトで URL を UTF-8 エンコードで送信するため、GB2312 エンコードの中国語 URL をサポートしていませんが、ftp: // プロトコルは機能します。試してみましたが、これは Firefox のバグだと思います。

UTF-8 としてエンコードされた HTML ファイル内: http://s.jb51.net/中文.rar -> ブラウザは自動的に http://s.jb51.net/%E4%B8 に変換します。 %AD%E6%96%87.rar

PHP での URLEncode:

コードをコピー コードは次のとおりです:

//GB2312 のエンコード
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 はスペースをプラス記号「%20」としてエンコードします。

UTF-8 エンコードを使用したい場合は、2 つの方法があります:

1. ファイルを UTF-8 ファイルとして保存し、urlencode または rawurlencode を直接使用します。

2. mb_convert_encoding 関数を使用します:

コードをコピーします コードは次のとおりです:
$url = 'http://s.jb51.net/中文.rar' ;
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."n";
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."n" ;
//http %3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar


例:


コードは次のとおりです。 function parseurl($url="")
{
$url = rawurlencode($url, 'gb2312', 'utf-8')); a = array("%3A", "%2F", "%40");
$b = array(":", "/", "@");
$url = str_replace($a, $b) , $url);
$url ;
}
$url="ftp://ud03:password@s.jb51.net/中文/中文.rar"; ://ud03:password@s.jb51.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar



JavaScript での URL エンコード: % E4%B8%AD%E6%96 %87-_.%20%E4%B8%AD%E6%96%87-_.%20

encodeURI は次の文字をエンコードしません: ":"、"/" 、「;」、「?」、「@」およびその他の特殊文字。

例: http://s.jb51.net/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6% 96 %87.rar


http://www.bkjia.com/PHPjc/324192.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/324192.html

技術記事

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