PHPのdata://ラッパー徹底解説!data URIスキームの基本と実践的な使い方
はじめに
data URIスキームは、1998年に公開されたRFC 2397で定義された仕様です。これは、Webページの中に外部リソースであるかのようにデータをインラインで埋め込むための仕組みを提供します。PHPでは、このdata URIを表現するために「data://」ストリームラッパーが用意されており、通常のファイルと同じようにデータを読み書きできます。
data://の構文
data URIは以下の構文に従って表現されます。
data:[メディアタイプ][;base64],データ
各パラメータの意味
メディアタイプ(media type)
データのMIMEタイプを指定します。省略した場合のデフォルト値は text/plain です。
;base64(オプション)
直前の部分とセミコロン(;)で区切って指定します。この拡張子を付けることで、データ部分がBase64方式でエンコードされたバイナリデータであることを示せます。
データ(data)
カンマ(,)で区切られた後ろの部分が実際のデータです。0バイト以上のオクテット列を文字として表現したものになります。
具体例
文字列をBase64エンコードしてdata:// URIとして使う
次の例では、文字列をBase64形式にエンコードし、その結果をdata:// URIのデータとして利用しています。
<?php
$string = "TutorialsPoint India (p) Ltd";
$b64 = base64_encode($string);
echo file_get_contents('data://text/plain;base64,' . $b64);
?>ファイルの内容をBase64に変換して読み込む
file_get_contents() 関数を使えば、ファイルからデータを読み込み、それをBase64形式に変換することも可能です。
<?php
$string = file_get_contents("test.txt");
$b64 = base64_encode($string);
echo file_get_contents('data://text/plain;base64,' . $b64);
?>text/htmlメディアタイプを指定する例
次の例では、data:// ラッパーのメディアタイプとして text/html を指定しています。HTMLファイルの内容をそのままHTMLとして処理したい場合に有効です。
<?php
$string = file_get_contents("test.html");
$b64 = base64_encode($string);
echo file_get_contents('data://text/html;base64,' . $b64);
?>まとめ
data:// ラッパーを使うことで、PHPは外部ファイルと同様の手順でインラインデータを扱えます。小さな画像やテキスト、HTML断片などをスクリプト内に直接埋め込みたい場合に便利な機能なので、ぜひ活用してみてください。
-
PHPのconvert_uudecode()関数とは?uuencode文字列をデコードする方法をわかりやすく解説
convert_uudecode()関数は、uuencode形式でエンコードされた文字列をデコードするためのPHPの組み込み関数です。この記事では、convert_uudecode()関数の基本情報から構文、パラメータ、戻り値、そして実際の使用例まで詳しく解説します。 convert_uudecode()関数とは convert_uudecode()関数は、uuencode(Unix-to-Unix encoding)アルゴリズムによってエンコードされたデータを、元の文字列に復元(デコード)するために使用されます。逆に、文字列をuuencode形式へエンコードしたい場合はconvert_uue
-
PHPのfile_put_contents()関数とは?使い方・パラメータ・戻り値を徹底解説
file_put_contents()関数は、指定した文字列をファイルに書き込むためのPHP組み込み関数です。この関数は、ファイルに書き込まれたバイト数を返し、処理が失敗した場合はFALSEを返します。 構文 file_put_contents(file_path, data, flags, context) パラメータ file_path − 書き込み対象となるファイルのパスを指定します。 data − ファイルに書き込むデータを設定します。文字列のほか、配列やストリームリソースも指定できます。 flags − ファイルの開き方やデータの書き込み方法を指定するオプションです。 FILE_