ホームページ  >  記事  >  バックエンド開発  >  php urlencode() 関数は URL エンコーディング分析を実装します_PHP チュートリアル

php urlencode() 関数は URL エンコーディング分析を実装します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:57:181091ブラウズ

phpでは、urlencode()関数は中国語を文字列エンコードに変換するもので、ブラウザで開いたときに中国語のURLが文字化けしたり間違ったりすることはありません。urlencode()を使用したエンコードをいくつか紹介します。具体的な詳細。

URLコード
(PHP 4、PHP 5)

urlencode — URL 文字列をエンコードする

バグを報告する 説明
文字列 urlencode (文字列 $str)
この機能を使用すると、文字列をエンコードして URL のリクエスト部分で使用することが簡単になり、次のページに変数を渡すことも簡単になります。

バグパラメータを報告する

ストラ
エンコードする文字列。

戻り値のバグを報告する

-_ を除くすべての非英数字文字がパーセント記号 (%) に置き換えられ、その後に 2 つの 16 進数が続き、スペースがプラス記号 (+) としてエンコードされた文字列を返します。このエンコーディングは、WWW フォーム POST データのエンコーディングと同じであり、application/x-www-form-urlencoded メディア タイプと同じエンコーディングです。歴史的な理由により、このエンコードは、スペースをプラス記号 (+) としてエンコードする点で RFC1738 エンコード (rawurlencode() を参照) とは異なります。

URLエンコードとは:

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

中国語 -> GB2312 のエンコード -> %D6%D0%CE%C4
中国語 -> UTF-8 エンコード -> %E4%B8%AD%E6%96%87

HTML で URL エンコード:
GB2312としてエンコードされたHTMLファイルでは、
/中文.rar -> ブラウザは自動的に /%D6%D0%CE%C4.rar に変換します。 注: Firefox はデフォルトで UTF-8 エンコードで URL を送信するため、GB2312 エンコードで中国語の URL を適切にサポートしていませんが、私が試した ftp:// プロトコルは問題ないと考えられます。 Firefox

UTF-8としてエンコードされたHTMLファイルでは、

/中文.rar -> ブラウザは自動的に /%E4%B8%AD%E6%96%87.rar
に変換します。

PHP での URL エンコード:

コードは次のとおりですコードをコピー
//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 = ‘/中文.rar’;

echo urlencode(mb_convert_encoding($url, ‘utf-8’, ‘gb2312’)).”n”;
echo rawurlencode(mb_convert_encoding($url, ‘utf-8’, ‘gb2312’)).”n”;
//http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
?>

例:

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

JavaScript での URL エンコード:

関数parseurl($url=””)

{
$url = rawurlencode(mb_convert_encoding($url, ‘gb2312’, ‘utf-8’));
$a = array(“%3A”, “%2F”, “%40”);
$b = array(“:”, “/”, “@”);
$url = str_replace($a, $b, $url);
$url を返します;
}
$url=”ftp://ud03:password@ud03.kinoko.name/中文/中文.rar”;
echo parseurl($url);
//ftp://ud03:password@ud03.kinoko.name/%D6%D0%CE%C4/%D6%D0%CE%C4.rar
?>

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

%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20

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

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

/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar


注:

注: HTML エンティティに一致する変数には注意してください。 &、©、£ などの文字はブラウザによって解析され、予期される変数名の代わりに実際のエンティティが使用されます。これは明らかな混乱であり、W3C は数年にわたって人々にこのことについて警告してきました。参照アドレス: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2。

PHP は、arg_separator.ini ディレクティブを通じて、パラメーター区切り文字を W3C が推奨するセミコロンに変更することをサポートしています。残念ながら、ほとんどのユーザー エージェントはフォーム データをセミコロン区切り形式で送信しません。より簡単な解決策は、区切り文字として & の代わりに & を使用することです。このために PHP の arg_separator を変更する必要はありません。このままにして、htmlentities() または htmlspecialchars() を使用して URL をエンコードします。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632093.html技術記事 phpのurlencode()関数は、ブラウザで開いたときに中国語のURLが文字化けしたり間違ったりしないように中国語を文字列エンコーディングに変換する関数です...
使い方を紹介します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。