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

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する

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

例えば画像名の最後に「.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);
?>
結果
c2FtdXJhaQ==

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

これがencodeです。

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

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

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

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

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

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

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

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

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

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

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

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)); 
?>

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

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


【何から学べばいいかわからない…そんな悩みを解決します!】

完全無料ですぐわかる「プログラミング学習プラン診断」

・適性にあわせて学習プランを診断
・完全無料で気軽に診断できる
・学習の悩みもまるっと解決

さっそく診断してみる

まとめ

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

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

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

それでは、また。

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

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

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close