roundcubemail/program/lib/Roundcube/rcube_imap.php
public static function convert_criteria($str, $charset, $dest_charset='US-ASCII')
    {
        // convert strings to US_ASCII
        if (preg_match_all('/\{([0-9]+)\}\r\n/', $str, $matches, PREG_OFFSET_CAPTURE)) {
            $last = 0; $res = '';
            foreach ($matches[1] as $m) {
                $string_offset = $m[1] + strlen($m[0]) + 4; // {}\r\n
                $string = substr($str, $string_offset - 1, $m[0]);
                $string = rcube_charset::convert($string, $charset, $dest_charset);

                if ($string === false || !strlen($string)) {
                    continue;
                }

                $res .= substr($str, $last, $m[1] - $last - 1) . rcube_imap_generic::escape($string);
                $last = $m[0] + $string_offset - 1;
            }

            if ($last < strlen($str)) {
                $res .= substr($str, $last, strlen($str)-$last);
            }
        }
        // strings for conversion not found
        else {
            $res = $str;
        }

        return $res;
    }
public static function convert_criteria($str, $charset, $dest_charset='US-ASCII')
    {
        // convert strings to US_ASCII
        if (preg_match_all('/\{([0-9]+)\}\r\n/', $str, $matches, PREG_OFFSET_CAPTURE)) {
            $last = 0; $res = '';
            foreach ($matches[1] as $m) {
                $string_offset = $m[1] + strlen($m[0]) + 4; // {}\r\n
                $string = substr($str, $string_offset - 1, $m[0]);
                $string = rcube_charset::convert($string, $charset, $dest_charset);

                if ($string === false || !strlen($string)) {
                    continue;
                }

                $res .= substr($str, $last, $m[1] - $last - 1) . rcube_imap_generic::escape($string);
                $last = $m[0] + $string_offset - 1;
            }

            if ($last < strlen($str)) {
                $res .= substr($str, $last, strlen($str)-$last);
            }
        }
        // strings for conversion not found
        else {
            $res = $str;
        }

        return $res;
    }
public static function convert_criteria ( $ str , $ charset , $ dest_charset = 'US-ASCII' ) { // convert strings to US_ASCII if ( preg_match_all ( '/\{([0-9]+)\}\r\n/' , $ str , $ matches , PREG_OFFSET_CAPTURE ) ) { $ last = 0 ; $ res = '' ; foreach ( $ matches [ 1 ] as $ m ) { $ string_offset = $ m [ 1 ] + strlen ( $ m [ 0 ] ) + 4 ; // {}\r\n $ string = substr ( $ str , $ string_offset - 1 , $ m [ 0 ] ) ; $ string = rcube_charset :: convert ( $ string , $ charset , $ dest_charset ) ; if ( $ string === false || ! strlen ( $ string ) ) { continue ; } $ res .= substr ( $ str , $ last , $ m [ 1 ] - $ last - 1 ) . rcube_imap_generic :: escape ( $ string ) ; $ last = $ m [ 0 ] + $ string_offset - 1 ; } if ( $ last < strlen ( $ str ) ) { $ res .= substr ( $ str , $ last , strlen ( $ str ) - $ last ) ; } } // strings for conversion not found else { $ res = $ str ; } return $ res ; }
Converts charset of search criteria string

@param  string  $str          Search string
@param  string  $charset      Original charset
@param  string  $dest_charset Destination charset (default US-ASCII)

@return string  Search string
Converts charset of search criteria string