ホームページ >バックエンド開発 >PHPチュートリアル >URL エンコーディングの難題: 「urlencode」と「rawurlencode」をいつ使用する必要がありますか?
さまざまな文字列から URL を構築する場合、開発者には urlencode() と rawurlencode() という 2 つのエンコード オプションがあります。この記事では、2 つの関数の重要な違いを詳しく掘り下げて、適切な使用法に関するガイダンスを提供します。
rawurlencode: RFC 準拠で変換された文字列
rawurlencode は仕様に準拠しています。 RFC 1738 (PHP 5.3.0 以前) と RFC 3986 の両方に概要が記載されています(PHP 5.3.0以降)。英数字以外の文字を「 」と 2 つの 16 進数字に置き換えます。このエンコード方式は、リテラル文字を URL 区切り文字として誤って解釈しないように保護し、送信中に発生する可能性のある文字変換から URL を保護します。
urlencode: プラス記号エンコーディングによる RFC からの離脱
一方、urlencode は、ある特定の方法で RFC 準拠から逸脱しています。スペースを " ではなく " " 記号としてエンコードします。 、" WWW フォームからのデータの投稿と一致するエンコード技術。
どちらを使用する場合
urlencode と rawurlencode の適切な選択は、意図された目的によって異なります。 。他のシステムとの相互運用性が最重要である場合、rawurlencode が推奨オプションとして浮上します。ただし、スペースが " ではなく " " としてエンコードされるフォームエンコードされたクエリ文字列を期待する従来のシステムの場合、" urlencode は依然として必要な選択肢です。
RFC Nuances
rawurlencode のコンテキストでは、RFC 1738 と RFC 3986 の微妙な違いに注目する価値があります。 PHP 5.3 より前では、rawurlencode は RFC 1738 に準拠しており、チルダ文字 (~) のエンコードが必要でした。ただし、PHP 5.3 以降、この関数はチルダ エンコーディングが不要であるとみなされる RFC 3986 に準拠しています。
追加の考慮事項
RFC 2396 は、有効な URI 構文についてのさらなる洞察を提供します。重要なのは、クエリ文字列内の予約文字として " " を識別するため、RFC 3986 に準拠したエンコーディングが必要となることです。 したがって、RFC 2396 に準拠する場合、rawurlencode は依然として推奨されるエンコーディング方法です。
以上がURL エンコーディングの難題: 「urlencode」と「rawurlencode」をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。