PHP での URL エンコード
URL には、誰かのフルネーム、別のリダイレクト URL、パスワードなどのパスとクエリのパラメータが含まれる場合があります。これらには、スペースや $ & : /
などの文字など、ASCII セット外の特殊文字を含めることができます。
したがって、インターネット経由で送信する前に、URL を正規の ASCII 形式に再生成する必要があります。そうしないと、HTTP プロトコルに干渉する可能性があります。
今日の記事では、PHP で URL をエンコードする方法を学びます。
PHP は、URL をエンコードするための 2つの関数を提供します。
PHP で urlencode()
を使用して URL をエンコードする
これは、URL をエンコードするために使用される PHP によって提供される組み込み関数です。この関数は、安全でない ASCII 文字を%
の後に 2 桁の 16 進数で置き換えます。この関数は、application/x-www-form-urlencoded
に従ってエンコードします。URL にスペースを含めることはできないため、この関数はスペースをプラス+
記号に置き換えます。特殊文字は、いくつかの事前定義されたルールに基づいて、非常に特殊な形式で再生成されます。
urlencode()
の構文
urlencode(string $input);
パラメーター
$input
:これは必須パラメータであり、エンコーディングが実行される文字列入力 URL のみを受け取ります。
戻り値
-_.
を除くすべての英数字以外の文字を含む文字列を返します。これらの文字は%
記号に置き換えられ、その後に 2 桁の 16 進数が続きます。
コード例:
<?php
echo urlencode("https://www.google.co.in/") . "\n";
echo urlencode("https://www.google.com/") . "\n";
?>
出力:
https%3A%2F%2Fwww.google.co.in%2F
https%3A%2F%2Fwww.google.com%2F
PHP で rawurlencode()
を使用して URL をエンコードする
これは PHP が提供する組み込み関数であり、RFC 3986 に従って特定の URL(Uniform Resource Locator)文字列をエンコードできます。プレーンなパーセントエンコードに従ってエンコードします。これは、リテラル文字が特別な URL 区切り文字として解釈されるのを防ぎ、(一部の電子メールシステムのように)文字変換を伴う伝送メディアによって URL が壊されるのを防ぐために使用されます。
記号またはスペース文字は、パーセント(%)記号の後に 2 桁の 16 進数で置き換えられます。
rawurlencode()
の構文
rawurlencode(string $input);
パラメーター
$input
:エンコードが実行される文字列入力 URL のみを受け取る必須パラメータです。
戻り値
-_.~
記号を除くすべての英数字以外の文字を含むエンコードされた文字列を返します。
コード例:
<?php
echo '<a href="http://testdomain.com/', rawurlencode('subscribers and admins/India'), '">';
?>
出力:
<a href="http://testdomain.com/subscribers%20and%20admins%2FIndia">
urlencode()
関数と rawurlencode()
関数の唯一の違いは、最初にスペースを+
としてエンコードし、後で%20
としてエンコードすることです。また、~
は urlencode()
でエンコードされますが、rawurlencode()
ではエンコードされません。クエリコンポーネントをエンコードする場合は、urlencode()
を使用し、パスセグメントをエンコードする場合は、rawurlencode()
を使用します。
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn