rawurlencode

関数の概要

rawurlencode は、PHPで文字列をRFC 3986に準拠した形式でURLエンコードするための関数です。URLのパス部分やクエリパラメータなどを安全に送信できるように、スペースや特殊文字をパーセントエンコーディングに変換します。PHPの urlencode と似ていますが、rawurlencode はRFC 3986に厳密に従っている点が特徴です。

パラメータの説明

  • string $string — エンコードしたい文字列を指定します。

戻り値

エンコードされた文字列を返します。元の文字列に含まれるスペースや記号はパーセントエンコーディングされます。例えば、スペースは %20 に変換されます。

使用例

基本的な使い方

<?php
$url = "こんにちは 世界";
$encoded = rawurlencode($url);
echo $encoded;
// 出力例: %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C
?>

日本語を含む文字列をRFC準拠の形式でエンコードしています。スペースは %20 に変換されていることがポイントです。

URLのパス部分のエンコード

<?php
$path = "folder name/file name.html";
$encodedPath = rawurlencode($path);
echo $encodedPath;
// 出力例: folder%20name%2Ffile%20name.html
?>

パス部分ではスラッシュ / はそのままか、エンコードしたい場合と使い分けが必要です。rawurlencode はスラッシュもエンコードするため、ディレクトリ区切りとして使いたい場合は注意が必要です。

クエリパラメータの値をエンコードする

<?php
$params = "name=田中 太郎&age=30";
$encodedParams = rawurlencode($params);
echo $encodedParams;
// 出力例: name%3D%E7%94%B0%E4%B8%AD%20%E5%A4%AA%E9%83%8E%26age%3D30
?>

クエリパラメータ全体をエンコードすると、イコール = やアンパサンド & もエンコードされるため、個別に値だけをエンコードするのが一般的です。

関連する関数

  • urlencode — 古い仕様のURLエンコードを行う関数。スペースは + に変換される。
  • urldecodeurlencode の反対処理をする関数。
  • rawurldecoderawurlencode の反対処理をする関数。

まとめ

rawurlencode は、URLのパスやクエリパラメータの値をRFC 3986準拠でエンコードしたい場合に非常に便利な関数です。スペースを %20 に変換し、より安全にURLを扱いたいときに使います。用途に合わせて urlencode と使い分けをすることで、実務でも正しくURL処理ができます。