Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. urlencode() / urldecode() / base64_encode()

urlencode() / urldecode() / base64_encode()対応: PHP 4(2000)

URLに含める文字列をエンコード・デコードしたり、バイナリデータをBase64形式に変換したりします。URLパラメータの安全な受け渡しやデータの符号化に活用されます。

構文
// URLエンコードします。スペースは『+』に変換されます。
urlencode($string);

// URLデコードします。
urldecode($string);

// RFC 3986 準拠でURLエンコードします。スペースは『%20』に変換されます。
rawurlencode($string);

// RFC 3986 準拠でURLデコードします。
rawurldecode($string);

// Base64エンコードします。
base64_encode($string);

// Base64デコードします。
base64_decode($string, $strict);
関数一覧
関数概要
urlencode($string)文字列をURLエンコードします。スペースは『+』に、その他の特殊文字は『%XX』形式に変換されます。クエリパラメータの値に使用します。
urldecode($string)URLエンコードされた文字列を元に戻します。
rawurlencode($string)RFC 3986 準拠でエンコードします。スペースは『%20』に変換されます。URLのパス部分に使用します。
rawurldecode($string)RFC 3986 準拠でデコードします。
base64_encode($string)文字列をBase64形式にエンコードします。バイナリデータをテキストとして安全に扱えるようになります。
base64_decode($string, $strict)Base64形式の文字列をデコードします。$strict を『true』にすると不正な文字が含まれる場合に『false』を返します。
戻り値

エンコード・デコード後の文字列を返します。『base64_decode()』はデコードに失敗した場合に『false』を返します。

サンプルコード
<?php
// 日本語をURLエンコードします。
echo urlencode("東京都"); // 『%E6%9D%B1%E4%BA%AC%E9%83%BD』と出力されます。

// クエリパラメータの組み立てに活用する例です。
$keyword = "PHP 入門";
$url = "https://example.com/search?q=" . urlencode($keyword);
echo $url; // スペースが『+』に変換されたURLが出力されます。

// rawurlencode() はスペースを『%20』に変換します。
echo rawurlencode("PHP 入門"); // スペースが『%20』に変換されます。

// URLデコードで元の文字列に戻します。
echo urldecode("%E6%9D%B1%E4%BA%AC%E9%83%BD"); // 『東京都』と出力されます。

// urlencode() と rawurlencode() の違いです。
echo urlencode("hello world"); // 『hello+world』と出力されます。
echo rawurlencode("hello world"); // 『hello%20world』と出力されます。

// Base64 エンコードです。
echo base64_encode("Hello PHP"); // 『SGVsbG8gUEhQ』と出力されます。

// Base64 デコードで元に戻します。
echo base64_decode("SGVsbG8gUEhQ"); // 『Hello PHP』と出力されます。

// メールの添付ファイルやAPIのデータ送受信に活用する例です。
$data = json_encode(["user" => "山田", "action" => "購入"]);
$encoded = base64_encode($data);
echo $encoded; // Base64形式の安全な文字列が出力されます。

// デコードして元のデータに戻します。
$decoded = json_decode(base64_decode($encoded), true);
echo $decoded["user"]; // 『山田』と出力されます。

// 複数のパラメータを安全に組み立てる例です。
$params = [
	"name" => "山田太郎",
	"city" => "東京都渋谷区"
];
echo http_build_query($params); // パラメータが自動的にエンコードされます。
概要

『urlencode()』はURLのクエリパラメータに含める値をエンコードする関数です。日本語やスペースなどの特殊文字を安全にURLに含められるようになります。『urlencode()』はスペースを『+』に変換しますが、『rawurlencode()』は『%20』に変換します。クエリパラメータの値には『urlencode()』、URLのパス部分には『rawurlencode()』を使うのが一般的です。

複数のパラメータを一括でエンコードしたい場合は http_build_query() が便利です。連想配列を渡すだけで、すべてのキーと値を自動的にエンコードしてクエリ文字列を生成します。

『base64_encode()』はバイナリデータをASCII文字列に変換する関数で、メールの添付ファイルやAPIでのデータ送受信に使われます。Base64は暗号化ではなく単なる符号化であるため、機密データの保護には使用しないでください。HTMLのエスケープには『htmlspecialchars()』を使用します。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。