関数の概要
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と組み合わせると、より実務に強い処理が実装できます。
