src/bundles/Mail/PHPMailer/class.phpmailer.php
public function encodeQ($str, $position = 'text')
    {
        // There should not be any EOL in the string
        $pattern = '';
        $encoded = str_replace(array("\r", "\n"), '', $str);
        switch (strtolower($position)) {
            case 'phrase':
                // RFC 2047 section 5.3
                $pattern = '^A-Za-z0-9!*+\/ -';
                break;
            /** @noinspection PhpMissingBreakStatementInspection */
            case 'comment':
                // RFC 2047 section 5.2
                $pattern = '\(\)"';
                // intentional fall-through
                // for this reason we build the $pattern without including delimiters and []
            case 'text':
            default:
                // RFC 2047 section 5.1
                // Replace every high ascii, control, =, ? and _ characters
                $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern;
                break;
        }
        $matches = array();
        if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
            // If the string contains an '=', make sure it's the first thing we replace
            // so as to avoid double-encoding
            $eqkey = array_search('=', $matches[0]);
            if ($eqkey !== false) {
                unset($matches[0][$eqkey]);
                array_unshift($matches[0], '=');
            }
            foreach (array_unique($matches[0]) as $char) {
                $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
            }
        }
        // Replace every spaces to _ (more readable than =20)
        return str_replace(' ', '_', $encoded);
    }
public function encodeQ($str, $position = 'text')
    {
        // There should not be any EOL in the string
        $pattern = '';
        $encoded = str_replace(array("\r", "\n"), '', $str);
        switch (strtolower($position)) {
            case 'phrase':
                // RFC 2047 section 5.3
                $pattern = '^A-Za-z0-9!*+\/ -';
                break;
            /** @noinspection PhpMissingBreakStatementInspection */
            case 'comment':
                // RFC 2047 section 5.2
                $pattern = '\(\)"';
                // intentional fall-through
                // for this reason we build the $pattern without including delimiters and []
            case 'text':
            default:
                // RFC 2047 section 5.1
                // Replace every high ascii, control, =, ? and _ characters
                $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern;
                break;
        }
        $matches = array();
        if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
            // If the string contains an '=', make sure it's the first thing we replace
            // so as to avoid double-encoding
            $eqkey = array_search('=', $matches[0]);
            if ($eqkey !== false) {
                unset($matches[0][$eqkey]);
                array_unshift($matches[0], '=');
            }
            foreach (array_unique($matches[0]) as $char) {
                $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
            }
        }
        // Replace every spaces to _ (more readable than =20)
        return str_replace(' ', '_', $encoded);
    }
public function encodeQ ( $ str , $ position = 'text' ) { // There should not be any EOL in the string $ pattern = '' ; $ encoded = str_replace ( array ( "\r" , "\n" ) , '' , $ str ) ; switch ( strtolower ( $ position ) ) { case 'phrase' : // RFC 2047 section 5.3 $ pattern = '^A-Za-z0-9!*+\/ -' ; break ; /** @noinspection PhpMissingBreakStatementInspection */ case 'comment' : // RFC 2047 section 5.2 $ pattern = '\(\)"' ; // intentional fall-through // for this reason we build the $pattern without including delimiters and [] case 'text' : default : // RFC 2047 section 5.1 // Replace every high ascii, control, =, ? and _ characters $ pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $ pattern ; break ; } $ matches = array ( ) ; if ( preg_match_all ( "/[{$pattern}]/" , $ encoded , $ matches ) ) { // If the string contains an '=', make sure it's the first thing we replace // so as to avoid double-encoding $ eqkey = array_search ( '=' , $ matches [ 0 ] ) ; if ( $ eqkey !== false ) { unset ( $ matches [ 0 ] [ $ eqkey ] ) ; array_unshift ( $ matches [ 0 ] , '=' ) ; } foreach ( array_unique ( $ matches [ 0 ] ) as $ char ) { $ encoded = str_replace ( $ char , '=' . sprintf ( '%02X' , ord ( $ char ) ) , $ encoded ) ; } } // Replace every spaces to _ (more readable than =20) return str_replace ( ' ' , '_' , $ encoded ) ; }
Encode a string using Q encoding.
@link http://tools.ietf.org/html/rfc2047
@param string $str the text to encode
@param string $position Where the text is going to be used, see the RFC for what that means
@access public
@return string
Encode a string using Q encoding .