PHPでbase64の使い方を知ろう!サンプルコードで速攻理解

プログラムをする上で意識しないといけない事にデータ形式というものがあります。

例えば画像名の最後に「.png」などのような拡張子がついていますね。

これがデータの形式を表しています。

プログラムでは色々な形式のデータを扱います。
それを扱う際に、別のデータ形式にしたいという場合も発生します。

今回はそんな時に使用するbase64について以下の内容でお話しします。

base64について
【基本】encode(エンコード)・decode(デコード)を行う
【応用】imageのencode・decodeについて

分かりやすくbase64について解説しますのでぜひご覧になってください。

目次

base64とは

base64は英数字(64種類)を使用するデータの形式を変更方法の一種です。

base64を用いてデータの形式を変更したり、元に戻したりする事ができます。

encode(エンコード)とは

encodeはデータの形式を変更する事です。

符号化と呼ばれる場合もあります。

一度encodeしたデータを元に戻す事もできます。

decode(デコード)とは

データの形式を変更(encode)した後、元に戻す事をdecodeと呼びます。

encodeとdecodeは対で使う場合も多いです。

あるタイミングでencodeしたデータを、また別のタイミングでdecodeというように使用します。

【実践・基本】encode・decodeを行ってみよう

それでは、実際にencode・とdecodeを行ってみましょう。

PHPでbase64方式でencodeする場合、base64_encodeを使用します。

<?php
$text = 'samurai';
echo base64_encode($text);
?>

[su_spacer size=”20″]

結果
c2FtdXJhaQ==

[su_spacer size=”20″]

変数に代入したデータとは全く違った出力結果になりました。

これがencodeです。

続いて、元に戻すdecodeを行います。

decodeの場合はbase64_decodeという関数を使用します。

<?php
$text = 'c2FtdXJhaQ==';
echo base64_decode($text);
?>

[su_spacer size=”20″]

結果
samurai

[su_spacer size=”20″]

元のテキストデータに戻りました。

今回はテキストデータを変換しましたが、他のデータも変換する事が出来ます。

次章ではimageデータを変換します。

【実践・応用】imageのencode・decodeを行ってみよう

前章ではテキストデータを変換しました。

しかし、変換したいデータがテキストデータ以外だった場合はどうでしょうか。

以下のコードを見てください。

<?php 
$img = base64_encode(file_get_contents('/home/samurai/test.jpg')); 
?>
<img src="data:image/jpg;base64,<?php echo $img; ?>">

[su_spacer size=”20″]

1行目で/home/samurai/の配下にあるtest.jpgをencodeしました。

そして、2行目でimgタグを記述して表示させています。

ブラウザで実行すると、画像がブラウザに表示されていると思います。

しかし普通にimgタグで記述してもよい気もしませんか?

実はこのようにencodeされたimageデータはHTMLファイルの中に書き込まれています。

このようなimageデータをインラインイメージと呼びます。

そして、imgタグを呼び出すためにサーバーに画像を取りにいかないのでサーバーの負荷の軽減になる可能性があるのです。

続いて、元に戻して画像を保存する場合のサンプルコードを紹介します。

<?php 
$img = base64_encode(file_get_contents('/home/samurai/test.jpg'));
file_put_contents('/home/samurai/test2.jpg', base64_decode($img)); 
?>

[su_spacer size=”20″]

1行目でencodeした画像データを、2行目でdecodeして/home/samurai/配下にtest2.jpgとして保存しました。

インラインイメージとして使う以外に、メールの添付ファイルにするためにテキストデータに変換するなどという場合もあるかもしれません。

まとめ

本日はPHPでbase64の方式でencode・decodeする方法をお伝えしました。

PHPの関数で変換する以外にonlineのツールでencode・decodeする方法もあります。

興味のある方はネットで検索してみてください。

それでは、また。

この記事を書いた人

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。

目次