function _buildHeaderParam($name, $value, $charset=null, $language=null,
        $encoding=null, $maxLength=75
    ) {
        // RFC 2045:
        // value needs encoding if contains non-ASCII chars or is longer than 78 chars
        if (!preg_match('#[^\x20-\x7E]#', $value)) {
            $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
                . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
            if (!preg_match($token_regexp, $value)) {
                // token
                if (strlen($name) + strlen($value) + 3 <= $maxLength) {
                    return " {$name}={$value}";
                }
            } else {
                // quoted-string
                $quoted = addcslashes($value, '\\"');
                if (strlen($name) + strlen($quoted) + 5 <= $maxLength) {
                    return " {$name}=\"{$quoted}\"";
                }
            }
        }

        // RFC2047: use quoted-printable/base64 encoding
        if ($encoding == 'quoted-printable' || $encoding == 'base64') {
            return $this->_buildRFC2047Param($name, $value, $charset, $encoding);
        }

        // RFC2231:
        $encValue = preg_replace_callback(
            '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/',
            array($this, '_encodeReplaceCallback'), $value
        );
        $value = "$charset'$language'$encValue";

        $header = " {$name}*={$value}";
        if (strlen($header) <= $maxLength) {
            return $header;
        }

        $preLength = strlen(" {$name}*0*=");
        $maxLength = max(16, $maxLength - $preLength - 3);
        $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|";

        $headers = array();
        $headCount = 0;
        while ($value) {
            $matches = array();
            $found = preg_match($maxLengthReg, $value, $matches);
            if ($found) {
                $headers[] = " {$name}*{$headCount}*={$matches[0]}";
                $value = substr($value, strlen($matches[0]));
            } else {
                $headers[] = " {$name}*{$headCount}*={$value}";
                $value = '';
            }
            $headCount++;
        }

        $headers = implode(';' . $this->_eol, $headers);
        return $headers;
    }
function _buildHeaderParam($name, $value, $charset=null, $language=null,
        $encoding=null, $maxLength=75
    ) {
        // RFC 2045:
        // value needs encoding if contains non-ASCII chars or is longer than 78 chars
        if (!preg_match('#[^\x20-\x7E]#', $value)) {
            $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
                . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
            if (!preg_match($token_regexp, $value)) {
                // token
                if (strlen($name) + strlen($value) + 3 <= $maxLength) {
                    return " {$name}={$value}";
                }
            } else {
                // quoted-string
                $quoted = addcslashes($value, '\\"');
                if (strlen($name) + strlen($quoted) + 5 <= $maxLength) {
                    return " {$name}=\"{$quoted}\"";
                }
            }
        }

        // RFC2047: use quoted-printable/base64 encoding
        if ($encoding == 'quoted-printable' || $encoding == 'base64') {
            return $this->_buildRFC2047Param($name, $value, $charset, $encoding);
        }

        // RFC2231:
        $encValue = preg_replace_callback(
            '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/',
            array($this, '_encodeReplaceCallback'), $value
        );
        $value = "$charset'$language'$encValue";

        $header = " {$name}*={$value}";
        if (strlen($header) <= $maxLength) {
            return $header;
        }

        $preLength = strlen(" {$name}*0*=");
        $maxLength = max(16, $maxLength - $preLength - 3);
        $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|";

        $headers = array();
        $headCount = 0;
        while ($value) {
            $matches = array();
            $found = preg_match($maxLengthReg, $value, $matches);
            if ($found) {
                $headers[] = " {$name}*{$headCount}*={$matches[0]}";
                $value = substr($value, strlen($matches[0]));
            } else {
                $headers[] = " {$name}*{$headCount}*={$value}";
                $value = '';
            }
            $headCount++;
        }

        $headers = implode(';' . $this->_eol, $headers);
        return $headers;
    }
function _buildHeaderParam ( $ name , $ value , $ charset = null , $ language = null , $ encoding = null , $ maxLength = 75 ) { // RFC 2045: // value needs encoding if contains non-ASCII chars or is longer than 78 chars if ( ! preg_match ( '#[^\x20-\x7E]#' , $ value ) ) { $ token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D' . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#' ; if ( ! preg_match ( $ token_regexp , $ value ) ) { // token if ( strlen ( $ name ) + strlen ( $ value ) + 3 <= $ maxLength ) { return " {$name}={$value}" ; } } else { // quoted-string $ quoted = addcslashes ( $ value , '\\"' ) ; if ( strlen ( $ name ) + strlen ( $ quoted ) + 5 <= $ maxLength ) { return " {$name}=\"{$quoted}\"" ; } } } // RFC2047: use quoted-printable/base64 encoding if ( $ encoding == 'quoted-printable' || $ encoding == 'base64' ) { return $ this -> _buildRFC2047Param ( $ name , $ value , $ charset , $ encoding ) ; } // RFC2231: $ encValue = preg_replace_callback ( '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/' , array ( $ this , '_encodeReplaceCallback' ) , $ value ) ; $ value = "$charset'$language'$encValue" ; $ header = " {$name}*={$value}" ; if ( strlen ( $ header ) <= $ maxLength ) { return $ header ; } $ preLength = strlen ( " {$name}*0*=" ) ; $ maxLength = max ( 16 , $ maxLength - $ preLength - 3 ) ; $ maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|" ; $ headers = array ( ) ; $ headCount = 0 ; while ( $ value ) { $ matches = array ( ) ; $ found = preg_match ( $ maxLengthReg , $ value , $ matches ) ; if ( $ found ) { $ headers [ ] = " {$name}*{$headCount}*={$matches[0]}" ; $ value = substr ( $ value , strlen ( $ matches [ 0 ] ) ) ; } else { $ headers [ ] = " {$name}*{$headCount}*={$value}" ; $ value = '' ; } $ headCount ++ ; } $ headers = implode ( ';' . $ this -> _eol , $ headers ) ; return $ headers ; }
Encodes the parameter of a header.

@param string $name      The name of the header-parameter
@param string $value     The value of the paramter
@param string $charset   The characterset of $value
@param string $language  The language used in $value
@param string $encoding  Parameter encoding. If not set, parameter value
is encoded according to RFC2231
@param int    $maxLength The maximum length of a line. Defauls to 75

@return string

@access private
Encodes the parameter of a header .