original_string: public function encodeHeader($str, $position = 'text')
      {
          $matchcount = 0;
          switch (strtolower($position)) {
              case 'phrase':
                  if (!preg_match('/[\200-\377]/', $str)) {
                      // Can't use addslashes as we don't know the value of magic_quotes_sybase
                      $encoded = addcslashes($str, "\0..\37\177\\\"");
                      if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
                          return ($encoded);
                      } else {
                          return ("\"$encoded\"");
                      }
                  }
                  $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
                  break;
              /** @noinspection PhpMissingBreakStatementInspection */
              case 'comment':
                  $matchcount = preg_match_all('/[()"]/', $str, $matches);
              // Intentional fall-through
              case 'text':
              default:
                  $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
                  break;
          }
  
          if ($matchcount == 0) { // There are no chars that need encoding
              return ($str);
          }
  
          $maxlen = 75 - 7 - strlen($this->CharSet);
          // Try to select the encoding which should produce the shortest output
          if ($matchcount > strlen($str) / 3) {
              // More than a third of the content will need encoding, so B encoding will be most efficient
              $encoding = 'B';
              if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) {
                  // Use a custom function which correctly encodes and wraps long
                  // multibyte strings without breaking lines within a character
                  $encoded = $this->base64EncodeWrapMB($str, "\n");
              } else {
                  $encoded = base64_encode($str);
                  $maxlen -= $maxlen % 4;
                  $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
              }
          } else {
              $encoding = 'Q';
              $encoded = $this->encodeQ($str, $position);
              $encoded = $this->wrapText($encoded, $maxlen, true);
              $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded));
          }
  
          $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded);
          $encoded = trim(str_replace("\n", $this->LE, $encoded));
  
          return $encoded;
      }
code: public function encodeHeader($str, $position = 'text')
      {
          $matchcount = 0;
          switch (strtolower($position)) {
              case 'phrase':
                  if (!preg_match('/[\200-\377]/', $str)) {
                      // Can't use addslashes as we don't know the value of magic_quotes_sybase
                      $encoded = addcslashes($str, "\0..\37\177\\\"");
                      if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
                          return ($encoded);
                      } else {
                          return ("\"$encoded\"");
                      }
                  }
                  $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
                  break;
              /** @noinspection PhpMissingBreakStatementInspection */
              case 'comment':
                  $matchcount = preg_match_all('/[()"]/', $str, $matches);
              // Intentional fall-through
              case 'text':
              default:
                  $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
                  break;
          }
  
          if ($matchcount == 0) { // There are no chars that need encoding
              return ($str);
          }
  
          $maxlen = 75 - 7 - strlen($this->CharSet);
          // Try to select the encoding which should produce the shortest output
          if ($matchcount > strlen($str) / 3) {
              // More than a third of the content will need encoding, so B encoding will be most efficient
              $encoding = 'B';
              if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) {
                  // Use a custom function which correctly encodes and wraps long
                  // multibyte strings without breaking lines within a character
                  $encoded = $this->base64EncodeWrapMB($str, "\n");
              } else {
                  $encoded = base64_encode($str);
                  $maxlen -= $maxlen % 4;
                  $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
              }
          } else {
              $encoding = 'Q';
              $encoded = $this->encodeQ($str, $position);
              $encoded = $this->wrapText($encoded, $maxlen, true);
              $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded));
          }
  
          $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded);
          $encoded = trim(str_replace("\n", $this->LE, $encoded));
  
          return $encoded;
      }
code_tokens: public function encodeHeader ( $ str , $ position = 'text' ) { $ matchcount = 0 ; switch ( strtolower ( $ position ) ) { case 'phrase' : if ( ! preg_match ( '/[\200-\377]/' , $ str ) ) { // Can't use addslashes as we don't know the value of magic_quotes_sybase $ encoded = addcslashes ( $ str , "\0..\37\177\\\"" ) ; if ( ( $ str == $ encoded ) && ! preg_match ( '/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/' , $ str ) ) { return ( $ encoded ) ; } else { return ( "\"$encoded\"" ) ; } } $ matchcount = preg_match_all ( '/[^\040\041\043-\133\135-\176]/' , $ str , $ matches ) ; break ; /** @noinspection PhpMissingBreakStatementInspection */ case 'comment' : $ matchcount = preg_match_all ( '/[()"]/' , $ str , $ matches ) ; // Intentional fall-through case 'text' : default : $ matchcount += preg_match_all ( '/[\000-\010\013\014\016-\037\177-\377]/' , $ str , $ matches ) ; break ; } if ( $ matchcount == 0 ) { // There are no chars that need encoding return ( $ str ) ; } $ maxlen = 75 - 7 - strlen ( $ this -> CharSet ) ; // Try to select the encoding which should produce the shortest output if ( $ matchcount > strlen ( $ str ) / 3 ) { // More than a third of the content will need encoding, so B encoding will be most efficient $ encoding = 'B' ; if ( function_exists ( 'mb_strlen' ) && $ this -> hasMultiBytes ( $ str ) ) { // Use a custom function which correctly encodes and wraps long // multibyte strings without breaking lines within a character $ encoded = $ this -> base64EncodeWrapMB ( $ str , "\n" ) ; } else { $ encoded = base64_encode ( $ str ) ; $ maxlen -= $ maxlen % 4 ; $ encoded = trim ( chunk_split ( $ encoded , $ maxlen , "\n" ) ) ; } } else { $ encoding = 'Q' ; $ encoded = $ this -> encodeQ ( $ str , $ position ) ; $ encoded = $ this -> wrapText ( $ encoded , $ maxlen , true ) ; $ encoded = str_replace ( '=' . self :: CRLF , "\n" , trim ( $ encoded ) ) ; } $ encoded = preg_replace ( '/^(.*)$/m' , ' =?' . $ this -> CharSet . "?$encoding?\\1?=" , $ encoded ) ; $ encoded = trim ( str_replace ( "\n" , $ this -> LE , $ encoded ) ) ; return $ encoded ; }
docstring: Encode a header string optimally.
  Picks shortest of Q, B, quoted-printable or none.
  @access public
  @param string $str
  @param string $position
  @return string
docstring_tokens: Encode a header string optimally . Picks shortest of Q B quoted - printable or none .