関数の概要
PHPの base64_decode 関数は、Base64エンコードされた文字列を元のバイナリデータやテキストにデコード(復号)するための関数です。Base64は主にバイナリデータをテキスト形式に変換するために使われますが、その逆操作が base64_decode で行われます。これにより、HTTP通信やメール送信時に利用されたエンコードデータの復元が可能です。
パラメータの説明
string $string:デコードしたいBase64形式の文字列を指定します。bool $strict(省略可能):厳密モードでデコードを行うかどうかを設定します。
デフォルトはfalseで、不正な文字を無視してデコードします。
trueにすると無効なBase64文字がある場合にfalseを返します。
戻り値
成功するとデコードした文字列(バイナリデータ)を返します。
失敗した場合や不正な文字が検出された場合(strict = true 時)は false を返します。
使用例
基本的な使い方
<?php
$encoded = 'SGVsbG8sIFdvcmxkIQ==';
$decoded = base64_decode($encoded);
echo $decoded; // 出力: Hello, World!
?>
この例では、Base64でエンコードされた「Hello, World!」をデコードし、元の文字列を表示しています。
画像データのBase64デコード
<?php
$base64Image = 'iVBORw0KGgoAAAANSUhEUgAAAAUA...'; // Base64形式の画像データ
$imageData = base64_decode($base64Image);
file_put_contents('image.png', $imageData);
?>
Base64でエンコードされた画像データをバイナリに戻し、画像ファイルとして保存しています。
strictパラメータの利用例
<?php
$invalidBase64 = 'SGVsbG8!*'; // 末尾に無効文字を含む
$result1 = base64_decode($invalidBase64);
var_dump($result1); // string型でデコード結果を出力(無効文字は無視)
$result2 = base64_decode($invalidBase64, true);
var_dump($result2); // bool(false) 無効文字があるため strictモードは失敗
?>
デフォルトでは無効な文字は無視されますが、trueを指定すると無効な文字がある場合に失敗します。
関連する関数
base64_encode:文字列をBase64形式にエンコードします。bin2hex:バイナリデータを16進数表現に変換します。urlencode:URLで安全に使えるように文字列をエンコードします。
まとめ
base64_decode は、Base64エンコードされたデータを元の文字列やバイナリデータに復元する便利な関数です。特にWeb開発やAPI連携、画像やファイルデータの処理でよく使われます。
デコード時の無効文字の扱いを制御できる strict パラメータも覚えておくと安心です。正しく使うことで安全かつ確実にBase64データを復元できます。
