Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】quoted_printable_encode()関数の使い方

quoted_printable_encode関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『quoted_printable_encode関数は、与えられた8ビット文字列をQuoted-Printable形式の文字列にエンコードを実行する関数です。このエンコード方式は、主に電子メールのMIME (Multipurpose Internet Mail Extensions) 規格で利用されます。電子メールシステムは歴史的に7ビットのASCII文字しか安全に扱えないものが多いため、日本語のようなマルチバイト文字やバイナリデータをそのまま送信すると文字化けやデータ破損の原因となることがあります。Quoted-Printableエンコーディングは、これらの非ASCII文字を、等号(=)と2桁の16進数を組み合わせた「=HH」という形式の印刷可能なASCII文字シーケンスに変換することで、問題を回避します。また、RFC 2045の仕様に従い、1行の長さが76文字を超えないように自動的に改行が挿入されます。この関数は、特にPHPで日本語を含むメール本文やヘッダを作成する際に重要となり、エンコードされた文字列を返します。なお、エンコードされた文字列を元の状態に戻すためには、対になるquoted_printable_decode関数を使用します。

構文(syntax)

1<?php
2
3$encoded_string = quoted_printable_encode($input_string);
4
5?>

引数(parameters)

string $string

  • string $string: エンコードする文字列

戻り値(return)

string

quoted_printable_encode関数は、入力された文字列をQuoted-Printableエンコーディング形式でエンコードした結果を文字列として返します。

サンプルコード

PHPでquoted_printableをエンコード・デコードする

1<?php
2
3/**
4 * quoted_printable_encode および quoted_printable_decode の使用例を示します。
5 *
6 * quoted-printable は、主に電子メールのMIMEパートで、半角英数字以外の文字(日本語など)や
7 * 特定の記号を安全に転送するために使用されるエンコーディング方式です。
8 * `quoted_printable_encode` は元の文字列をエンコードし、
9 * `quoted_printable_decode` はエンコードされた文字列を元の形式に戻します。
10 */
11function demonstrateQuotedPrintableEncoding(): void
12{
13    // エンコードする元の文字列を定義します。
14    // 日本語、特殊文字、および長めの行を含むことで、エンコードの効果を示します。
15    $originalString = "こんにちは、世界! これは、=?のような特殊文字を含むテスト文字列です。 " .
16                      "長文のコンテンツや非ASCII文字をメールで安全に送信する際に役立ちます。 " .
17                      "例: æøåäöüßñçé";
18
19    echo "--- 元の文字列 ---\n";
20    echo $originalString . "\n\n";
21
22    // quoted_printable_encode() を使用して文字列をエンコードします。
23    // 非ASCII文字や特定のASCII文字が `=XX` 形式に変換されます。
24    $encodedString = quoted_printable_encode($originalString);
25
26    echo "--- quoted_printable_encode() でエンコードされた文字列 ---\n";
27    echo $encodedString . "\n\n";
28
29    // quoted_printable_decode() を使用してエンコードされた文字列をデコードします。
30    // `=XX` 形式の文字が元の文字に戻されます。
31    $decodedString = quoted_printable_decode($encodedString);
32
33    echo "--- quoted_printable_decode() でデコードされた文字列 ---\n";
34    echo $decodedString . "\n\n";
35
36    // 元の文字列とデコードされた文字列が一致するかを確認し、処理が正しく行われたことを検証します。
37    echo "--- 検証 ---\n";
38    if ($originalString === $decodedString) {
39        echo "元の文字列とデコードされた文字列は一致します。\n";
40    } else {
41        echo "エラー: 元の文字列とデコードされた文字列が一致しません。\n";
42    }
43}
44
45// 関数を実行してデモンストレーションを開始します。
46demonstrateQuotedPrintableEncoding();
47
48?>

PHPのquoted_printable_encode関数は、電子メールのMIMEパートなどで、日本語のような非ASCII文字や特定の記号を安全に転送するため、文字列をquoted-printable形式でエンコードします。引数はstring型のエンコードしたい元の文字列、戻り値はエンコードされたstring型の文字列です。

サンプルコードでは、まず日本語や特殊文字を含む元の文字列を定義し、それをquoted_printable_encode関数でエンコードしています。エンコードにより、非ASCII文字や特定の記号が「=XX」のような形式に変換されます。続いて、関連するquoted_printable_decode関数を用いて、このエンコード済み文字列を元の形式にデコードし、元の文字列とデコード結果が一致することを検証しています。この一連の処理は、異なるシステム間で文字データを破損させずに正確にやり取りする際に役立つ機能です。

quoted_printable_encodeは、主に電子メールのMIMEパートなどで、日本語のような非ASCII文字や特定の記号を7ビット環境で安全に転送するためのエンコード処理です。これは汎用的なデータ暗号化や圧縮とは異なり、特定の通信プロトコルでのデータ表現に特化しています。エンコードされた文字列を元の形式に戻すには、必ずquoted_printable_decode関数とペアで利用します。利用時には、元の文字列の文字エンコーディング(UTF-8など)が正しく認識されているかを確認し、予期せぬ文字化けが発生しないよう注意が必要です。この関数は、メールヘッダや本文の一部など、特定の用途で必要となる場合にのみ利用することが推奨されます。

関連コンテンツ

関連プログラミング言語