ホームページ バックエンド開発 PHPチュートリアル PHPのエンコード機能の使い方 - mime.inc2_PHPチュートリアル

PHPのエンコード機能の使い方 - mime.inc2_PHPチュートリアル

Jul 13, 2016 pm 05:27 PM
php text 使用 関数 コーディング

テキスト、テキスト => TYPETEXT、TYPEMULTIPART => マルチパート、マルチパート => TYPEMULTIPART、TYPEMESSAGE => メッセージ、メッセージ => TYPEMESSAGE、TYPEAPPLICATION => アプリケーション、アプリケーション => TYPEAPPLICATION、TYPEAUDIO => オーディオ、オーディオ => TYPEAUDIO、TYPEIMAGE = > 画像、画像 => TYPEIMAGE、TYPEVIDEO => ビデオ、ビデオ => TYPEVIDEO、TYPEOTHER => 不明、不明 => TYPEOTHER ); $mime_encodings = array( ENC7BIT => 7ビット, 7ビット => ENC7BIT, ENC8BIT => 8ビット, 8ビット => ENC8BIT, ENCBINARY => バイナリ, バイナリ => ENCBINARY, ENCBASE64 => Base64, Base64 => ENCBASE64, ENCQUOTEDPRINTABLE => quote- printable、quoted-printable => ENCQUOTEDPRINTABLE、ENCOTHER => 不明、不明 => ENCOTHER ); /*** MIME:: クラスは、MIME 標準を処理するためのメソッドを提供します。 * * @author Chuck Hagenbuch * @version $Revision: 1.64 $ * @horde 1.3 以降 * @package horde.mime*/ class MIME { /*** 文字列に 8 ビット文字が含まれているかどうかを判断します。 * @access private * * @param string $string チェックする文字列。 * @return boolean 存在する場合は true、存在しない場合は false。*/ function is8bit($string) { if (is_string($string)) { for ($i = 0; $i > 7) return true ; false を返します。 false を返します。 } /*** RFC 2047 に従って、非 ASCII 文字を含む文字列をエンコードします。 * * @param string $text エンコードするテキスト。 * @param string $charset (オプション) テキストの文字セット。 * @param boolean $outer これは最後の反復ですか? * * @return string ASCII 以外の文字が含まれる場合にのみエンコードされるテキスト。*/ function encode($text, $charset = null, $outer = true) { if (MIME::is8bit($text)) { if (((strlen($text) * 3) + strlen($charset) + 7) > 76) { $text = MIME::encode(substr($text, 0, (23 - strlen($charset))), $charset) 。 MIME::encode(substr($text, (23 - strlen($charset))), $charset, false); } else { $text = "=?$charset?B?" 。 strtr(trim(base64_encode($text)), , _) 。 「?= "; } } // これが最後の反復の場合、 // 末尾の改行/タブ文字を削除します。 if ($outer && (substr($text, -2) == " ")) $text = substr($text, 0, -2); return $text; } /*** RFC 2047 に従って電子メール アドレスを含む文字列をエンコードします。 * * これは MIME::encode() とは異なります。これは電子メール アドレスを正当に保ち、 * 個人情報のみをエンコードするためです。 * * @param string $text エンコードする電子メール アドレス。 * @param string $charset (オプション) テキストの文字セット。 * @param string $defserver (オプション) メールボックスに追加するデフォルトのドメイン。 * * @return string ASCII 以外の文字が含まれる場合にのみエンコードされるテキスト。*/ function encodeAddress($text, $charset = null, $defserver = null) { include_once Mail/ RFC822.php; $addr_arr = Mail_RFC822::parseAddressList($text, $defserver, false, false); $text = ; if (is_array($addr_arr)) { foreach ($addr_arr as $addr) { if ($ addr->personal)) { $personal = ; } else { if ((substr($addr->personal, 0, 1) == ") && (substr($addr->personal, -1) == ") ) { $addr->personal = substr($addr->personal, 1, -1); } $personal = MIME::encode($addr->personal, $charset) } if (strlen($text) ! = 0) $text .= , ; // FIXME: imap モジュールの依存関係 $text .= MIME::trimEmailAddress(imap_rfc822_write_address($addr->mailbox, $addr->host, $personal)); ; } /*** RFC 2047 でエンコードされた文字列をデコードします。 * * @param string $string デコードするテキスト。 * @return string デコードされたテキスト、またはエンコードされていない場合は元の文字列。*/ function decode($string) { $pos = strpos($string, =?); if ($pos === false) { return $string;複数のエンコードされた単語の間 $string = preg_replace(|?=s=?|, ?==?, $string); // 先行するテキストを保存します $search = substr ($string, $pos + 2, 75); // MIME ヘッダーの仕様では、これが 1 つのエンコードされた単語の最長であると規定されています $d1 = strpos($search, ?); if (!is_int($d1)) { $string を返します。 $charset = substr($string, $pos + 2, $d1); $search = substr($search, $d1 + 1); $d2 = strpos($search, ?); if (!is_int($d2)) { $string を返します。 $encoding = substr($search, 0, $d2); $search = substr($search, $d2+1); $end = strpos($search, ?=); if (!is_int($end)) { $string を返します。 $encoded_text = substr($search, 0, $end); $rest = substr($string, (strlen($preceding . $charset . $encoding . $encoded_text) + 6)); switch ($encoding) { case Q: case q: $encoded_text = str_replace(_, %20, $encoded_text); $encoded_text = str_replace(=, %, $encoded_text); $decode = urldecode($encoded_text); /* キリル文字セットを変換します。 */ if (stristr($GLOBALS[registry]->getCharset(), windows-1251)) { if (stristr($charset, koi8-r)) { $decoded = Convert_cyr_string($decoded, k, w); if (stristr($GLOBALS[registry]->getCharset(), koi8-r)) { if (stristr($charset, windows-1251)) { $decoded = Convert_cyr_string($decoded, w, k); } }壊す;ケース B: ケース B: $decoded = urldecode(base64_decode($encoded_text)); if (stristr($GLOBALS[registry]->getCharset(), windows-1251)) { if (stristr($charset, koi8-r)) { $decoded = Convert_cyr_string($decoded, k, w); if (stristr($GLOBALS[registry]->getCharset(), koi8-r)) { if (stristr($charset, windows-1251)) { $decoded = Convert_cyr_string($decoded, w, k); } } 壊す;デフォルト: $decoded = =? 。 $charset 。 ? 。 $エンコーディング 。 ? 。 $encoded_text 。 ?=;壊す; $preceding を返します。 $decode 。 MIME::decode($rest); } /*** メール アドレスに個人情報が含まれていない場合は、そのアドレスを囲んでいる * 山括弧 () を削除してください。 * * @param string $address トリミングするアドレス。 * @return string トリミングされたアドレス。*/ function trimEmailAddress($address) { $address = trim($address); if ((substr($address, 0, 1) == )) { $address = substr($address, 1, -1); $address を返します。 } } ?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531855.html技術記事テキスト、テキスト => TYPETEXT、TYPEMULTIPART => マルチパート、マルチパート => TYPEMULTIPART、TYPEMESSAGE => メッセージ、メッセージ => TYPEMESSAGE、TYPEAPPLICATION => アプリケーション、アプリケーション => TYPEA...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles