quoted_printable_decode

関数の概要

quoted_printable_decodeは、PHPでQuoted-Printable形式の文字列をデコードするための関数です。メールの本文などで使われることが多いこの形式は、7ビット環境でバイナリデータや非ASCII文字を安全に送受信するためのエンコーディング手法です。quoted_printable_decodeを使うことで、Quoted-Printableでエンコードされた文字列を元の状態に戻すことができます。

パラメータの説明

  • string $string: デコードしたいQuoted-Printable形式の文字列を指定します。

戻り値

引数で渡したQuoted-Printable形式の文字列をデコードした結果の通常文字列を返します。文字列が不正な場合でも、できる限りデコードを試みた文字列を返します。

使用例

基本的な使い方

<?php
$encoded = "Hello=20World=21";
$decoded = quoted_printable_decode($encoded);
echo $decoded; // 出力: Hello World!
?>

ここではスペースが=20、感嘆符が=21とエンコードされた文字列をデコードしています。結果は通常の「Hello World!」になります。

メールヘッダーや本文のデコードに使う例

<?php
$emailBody = "This=20is=20an=20email=20body=2E=0ANew=20line=20starts=20here.";
$decodedBody = quoted_printable_decode($emailBody);
echo nl2br($decodedBody);
// 出力:
// This is an email body.
// New line starts here.
?>

メール本文中の改行コードや特殊文字を含むQuoted-Printable形式を正しく処理して元の内容に戻しています。

非ASCII文字を含む日本語の例

<?php
$jpEncoded = "=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF=2E";
$decodedJp = quoted_printable_decode($jpEncoded);
echo $decodedJp; // 出力: こんにちは.
?>

UTF-8でエンコードされた日本語のQuoted-Printable文字列をデコード。返り値は正常に「こんにちは.」となります。

関連する関数

  • quoted_printable_encode: 文字列をQuoted-Printable形式にエンコードする関数。
  • base64_decode: Base64エンコードされた文字列をデコードする関数。
  • mb_convert_encoding: 文字エンコーディングの変換を行う関数。エンコード後の文字コード変換に使える。

まとめ

quoted_printable_decodeはPHPでメール本文やヘッダーに使われるQuoted-Printable形式を簡単にデコードできる便利な関数です。特殊文字や改行を含んだデータも正確にデコードできるため、メール処理や文字列操作で役立ちます。
複数の文字コードが混在することもあるため、必要に応じてmb_convert_encodingと組み合わせると、より実務に強い処理が実装できます。