概念と使用方法
- PHPバージョン
- 4+
rawurldecode() 関数は
パーセント記号(%)とその後に続く2桁の16進数でエンコードされた文字を元の文字に復元し、%20は空白文字に変換するデコード関数です。
この関数はrawurlencode() 関数によって厳密にエンコードされたURIコンポーネント(例:パスセグメント、クエリパラメータ値)をデコードする際に主に使用されます。
基本の例
/* rawurlencode() 関数でクエリパラメータ値をエンコード */
$keyword = 'iPhone & Galaxy/Note=100% #1';
$encoded = rawurlencode($keyword);
echo 'https://example.com/search?query=' . $encoded;
// 出力: 'https://example.com/search?query=iPhone%20%26%20Galaxy%2FNote%3D100%25%20%231'
/* urlencode() でエンコードされたクエリパラメータ値をデコード */
$decoded = rawurldecode($encoded);
echo $decoded;
// 出力: 'iPhone & Galaxy/Note=100% #1'
特徴
- URLエンコードされた文字列を元の文字列にデコードする関数です。
rawurlencode()関数でエンコードされたURLをデコードするのに最適化されています。%20は空白に変換されるという特徴があります。
rawurlencode() 関数は、与えられた文字列をRFC 3986に従ってURLで使用可能な形式にエンコードします。
RFC 3986はURLエンコードのための標準であり、アルファベットの大文字・小文字、数字、-、_、.、~ 以外のすべての文字は、2桁の16進数の数字に続くパーセント(%)記号で置き換えられます。また、空白は %20 にエンコードされます。
構文
rawurldecode(string $string): string
引数
$string |
デコードする対象のエンコード済みURL文字列です。 |
|---|
戻り値
エンコードされたURL文字列 $string をデコードし、デコードされた文字列を返します。
使用例
$server_url = 'https://www.example.com';
$image_path = '/images/my image.jpg';
// ファイルパスをURLに追加する際に rawurlencode() 関数を使用
$encoded_image_path = rawurlencode($image_path);
$image_url = $server_url . $encoded_image_path;
echo $image_url . '<br>';
// 出力: 'https://www.example.com%2Fimages%2Fmy%20image.jpg'
$rawurlencode_image_path = rawurldecode($image_path);
echo $rawurlencode_image_path;
// 出力: '/images/my image.jpg'
ファイルパスには空白('')、スラッシュ(/)などの特殊文字が含まれることがあります。
上の例では、ファイルパスに含まれる空白やスラッシュを rawurlencode() 関数を使用してURLに安全に追加し、最終的に画像URLを生成します。こうすることで、ファイルパスの特殊文字がURLの規則に従いつつ、ウェブ上で正しく処理されます。
このように rawurlencode() 関数でエンコードされたものは、rawurldecode() 関数を使用してデコードすると、安全に元の文字列に復元されます。