Use the php encoding function-mime. inc2

Source: Internet
Author: User

Text, text => TYPETEXT, TYPEMULTIPART => multipart, multipart => TYPEMULTIPART, TYPEMESSAGE => message, message => TYPEMESSAGE, TYPEAPPLICATION => application, application => TYPEAPPLICATION, TYPEAUDIO => audio, audio => TYPEAUDIO, TYPEIMAGE => image, image => TYPEIMAGE, TYPEVIDEO => video, video => TYPEVIDEO, TYPEOTHER => unknown, unknown => TYPEOTHER); $ mime_encodings = array (ENC7BIT => 7bit, 7bit => ENC7BIT, ENC8BIT => 8bit, 8bit => ENC8BIT, ENCBINARY => binary, binary => ENCBINARY, ENCBASE64 => base64, base64 => ENCBASE64, encoding => quoted-printable, quoted-printable => ENCQUOTEDPRINTABLE, ENCOTHER => unknown, unknown => ENCOTHER ); /*** The MIME: class provides methods for dealing with MIME standards. ** @ author Chuck Hagenbuch * @ Version $ Revision: 1.64 $ * @ since Horde 1.3 * @ package horde. mime */class MIME {/*** Determine if a string contains 8-bit characters. * @ access private ** @ param string $ string The string to check. * @ return boolean true if it does, false if it doesnt. */function is8bit ($ string) {if (is_string ($ string) {for ($ I = 0; $ I <strlen ($ string); $ I ++) {if (ord ($ string [$ I])> 7) return true ;} Return false;}/*** Encode a string containing non-ascii characters according to RFC 2047. ** @ param string $ text The text to encode. * @ param string $ charset (optional) The character set of the text. * @ param boolean $ outer Is this the final iteration? ** @ Return string The text, encoded only if it contains non-ascii characters. */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 this is the final iteration, take off any trailing // newline/tab chars. if ($ outer & (substr ($ text,-2) = "") $ text = substr ($ text, 0,-2); return $ text ;} /*** Encode a string containing email addresses according to RFC 2047. ** This differs from MIME: encode () because it keeps email * addresses legal, only encoding the personal information. ** @ param string $ text The email ad Dresses to encode. * @ param string $ charset (optional) The character set of the text. * @ param string $ defserver (optional) The default domain to append to mailboxes. ** @ return string The text, encoded only if it contains non-ascii characters. */function encodeAddress ($ text, $ charset = null, $ defserver = null) {include_once Mail/RFC822.php; $ addr_arr = Mail_RFC822: parseAddressList ($ text, $ def Server, false, false); $ text =; if (is_array ($ addr_arr) {foreach ($ addr_arr as $ addr) {if (empty ($ 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: dependency on imap module $ text. = MIME: trimEmailAddress (imap_rfc822_write_address ($ addr-> mailbox, $ addr-> host, $ personal);} return $ text ;} /*** Decode an RFC 2047-encoded string. ** @ param string $ string The text to decode. * @ return string The decoded text, or the original string if it was not encoded. */function decode ($ string) {$ pos = strpos ($ string, = ?); If ($ pos = false) {return $ string;} // take out any spaces between multiple encoded words $ string = preg_replace (|? = S =? | ,? == ?, $ String); $ preceding = substr ($ string, 0, $ pos); // save any preceding text $ search = substr ($ string, $ pos + 2, 75 ); // the mime header spec says this is the longest a single encoded word can be $ d1 = strpos ($ search ,?); If (! Is_int ($ d1) {return $ string;} $ charset = substr ($ string, $ pos + 2, $ d1); $ search = substr ($ search, $ d1 + 1); $ d2 = strpos ($ search ,?); If (! Is_int ($ d2) {return $ string ;}$ encoding = substr ($ search, 0, $ d2); $ search = substr ($ search, $ d2 + 1 ); $ end = strpos ($ search ,? =); If (! Is_int ($ end) {return $ 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); $ decoded = urldecode ($ encoded_text);/* Convert Cyrillic character sets. */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) ;}} break; case B: case B: $ decoded = urldecode (base64_decode ($ encoded_text )); if (stristr ($ GLOBALS [registry]-> getCharset (), windo Ws-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) ;}} break; default: $ decoded =?. $ Charset .?. $ Encoding .?. $ Encoded_text .? =; Break;} return $ preceding. $ decoded. MIME: decode ($ rest);}/*** If an email address has no personal information, get rid of any * angle brackets (<>) around it. ** @ param string $ address The address to trim. * @ return string The trimmed address. */function trimEmailAddress ($ address) {$ address = trim ($ address); if (substr ($ address, 0, 1) = <) & (substr ($ address,-1) ==>) {$ address = Substr ($ address, 1,-1);} return $ address ;}}?>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.