选择语言 :

 Core_UTF8::strtoupper

Makes a UTF-8 string uppercase. This is a UTF8-aware version of strtoupper.

string Core_UTF8::strtoupper( string $str )
author
Andreas Gohr andi@splitbrain.org
uses
IS_MBSTRING
Kohana::$charset

参数列表

参数 类型 描述 默认值
$str string Mixed case string
返回值
  • string
File: ./core/classes/utf8.class.php
public static function strtoupper($str)
{
    if (IS_MBSTRING)return mb_strtoupper($str, Core::$charset);

    if (UTF8::is_ascii($str)) return strtoupper($str);

    static $UTF8_LOWER_TO_UPPER = null;

    if ( $UTF8_LOWER_TO_UPPER === null )
    {
        $UTF8_LOWER_TO_UPPER = array(
            0x0061 => 0x0041,
            0x03C6 => 0x03A6,
            0x0163 => 0x0162,
            0x00E5 => 0x00C5,
            0x0062 => 0x0042,
            0x013A => 0x0139,
            0x00E1 => 0x00C1,
            0x0142 => 0x0141,
            0x03CD => 0x038E,
            0x0101 => 0x0100,
            0x0491 => 0x0490,
            0x03B4 => 0x0394,
            0x015B => 0x015A,
            0x0064 => 0x0044,
            0x03B3 => 0x0393,
            0x00F4 => 0x00D4,
            0x044A => 0x042A,
            0x0439 => 0x0419,
            0x0113 => 0x0112,
            0x043C => 0x041C,
            0x015F => 0x015E,
            0x0144 => 0x0143,
            0x00EE => 0x00CE,
            0x045E => 0x040E,
            0x044F => 0x042F,
            0x03BA => 0x039A,
            0x0155 => 0x0154,
            0x0069 => 0x0049,
            0x0073 => 0x0053,
            0x1E1F => 0x1E1E,
            0x0135 => 0x0134,
            0x0447 => 0x0427,
            0x03C0 => 0x03A0,
            0x0438 => 0x0418,
            0x00F3 => 0x00D3,
            0x0440 => 0x0420,
            0x0454 => 0x0404,
            0x0435 => 0x0415,
            0x0449 => 0x0429,
            0x014B => 0x014A,
            0x0431 => 0x0411,
            0x0459 => 0x0409,
            0x1E03 => 0x1E02,
            0x00F6 => 0x00D6,
            0x00F9 => 0x00D9,
            0x006E => 0x004E,
            0x0451 => 0x0401,
            0x03C4 => 0x03A4,
            0x0443 => 0x0423,
            0x015D => 0x015C,
            0x0453 => 0x0403,
            0x03C8 => 0x03A8,
            0x0159 => 0x0158,
            0x0067 => 0x0047,
            0x00E4 => 0x00C4,
            0x03AC => 0x0386,
            0x03AE => 0x0389,
            0x0167 => 0x0166,
            0x03BE => 0x039E,
            0x0165 => 0x0164,
            0x0117 => 0x0116,
            0x0109 => 0x0108,
            0x0076 => 0x0056,
            0x00FE => 0x00DE,
            0x0157 => 0x0156,
            0x00FA => 0x00DA,
            0x1E61 => 0x1E60,
            0x1E83 => 0x1E82,
            0x00E2 => 0x00C2,
            0x0119 => 0x0118,
            0x0146 => 0x0145,
            0x0070 => 0x0050,
            0x0151 => 0x0150,
            0x044E => 0x042E,
            0x0129 => 0x0128,
            0x03C7 => 0x03A7,
            0x013E => 0x013D,
            0x0442 => 0x0422,
            0x007A => 0x005A,
            0x0448 => 0x0428,
            0x03C1 => 0x03A1,
            0x1E81 => 0x1E80,
            0x016D => 0x016C,
            0x00F5 => 0x00D5,
            0x0075 => 0x0055,
            0x0177 => 0x0176,
            0x00FC => 0x00DC,
            0x1E57 => 0x1E56,
            0x03C3 => 0x03A3,
            0x043A => 0x041A,
            0x006D => 0x004D,
            0x016B => 0x016A,
            0x0171 => 0x0170,
            0x0444 => 0x0424,
            0x00EC => 0x00CC,
            0x0169 => 0x0168,
            0x03BF => 0x039F,
            0x006B => 0x004B,
            0x00F2 => 0x00D2,
            0x00E0 => 0x00C0,
            0x0434 => 0x0414,
            0x03C9 => 0x03A9,
            0x1E6B => 0x1E6A,
            0x00E3 => 0x00C3,
            0x044D => 0x042D,
            0x0436 => 0x0416,
            0x01A1 => 0x01A0,
            0x010D => 0x010C,
            0x011D => 0x011C,
            0x00F0 => 0x00D0,
            0x013C => 0x013B,
            0x045F => 0x040F,
            0x045A => 0x040A,
            0x00E8 => 0x00C8,
            0x03C5 => 0x03A5,
            0x0066 => 0x0046,
            0x00FD => 0x00DD,
            0x0063 => 0x0043,
            0x021B => 0x021A,
            0x00EA => 0x00CA,
            0x03B9 => 0x0399,
            0x017A => 0x0179,
            0x00EF => 0x00CF,
            0x01B0 => 0x01AF,
            0x0065 => 0x0045,
            0x03BB => 0x039B,
            0x03B8 => 0x0398,
            0x03BC => 0x039C,
            0x045C => 0x040C,
            0x043F => 0x041F,
            0x044C => 0x042C,
            0x00FE => 0x00DE,
            0x00F0 => 0x00D0,
            0x1EF3 => 0x1EF2,
            0x0068 => 0x0048,
            0x00EB => 0x00CB,
            0x0111 => 0x0110,
            0x0433 => 0x0413,
            0x012F => 0x012E,
            0x00E6 => 0x00C6,
            0x0078 => 0x0058,
            0x0161 => 0x0160,
            0x016F => 0x016E,
            0x03B1 => 0x0391,
            0x0457 => 0x0407,
            0x0173 => 0x0172,
            0x00FF => 0x0178,
            0x006F => 0x004F,
            0x043B => 0x041B,
            0x03B5 => 0x0395,
            0x0445 => 0x0425,
            0x0121 => 0x0120,
            0x017E => 0x017D,
            0x017C => 0x017B,
            0x03B6 => 0x0396,
            0x03B2 => 0x0392,
            0x03AD => 0x0388,
            0x1E85 => 0x1E84,
            0x0175 => 0x0174,
            0x0071 => 0x0051,
            0x0437 => 0x0417,
            0x1E0B => 0x1E0A,
            0x0148 => 0x0147,
            0x0105 => 0x0104,
            0x0458 => 0x0408,
            0x014D => 0x014C,
            0x00ED => 0x00CD,
            0x0079 => 0x0059,
            0x010B => 0x010A,
            0x03CE => 0x038F,
            0x0072 => 0x0052,
            0x0430 => 0x0410,
            0x0455 => 0x0405,
            0x0452 => 0x0402,
            0x0127 => 0x0126,
            0x0137 => 0x0136,
            0x012B => 0x012A,
            0x03AF => 0x038A,
            0x044B => 0x042B,
            0x006C => 0x004C,
            0x03B7 => 0x0397,
            0x0125 => 0x0124,
            0x0219 => 0x0218,
            0x00FB => 0x00DB,
            0x011F => 0x011E,
            0x043E => 0x041E,
            0x1E41 => 0x1E40,
            0x03BD => 0x039D,
            0x0107 => 0x0106,
            0x03CB => 0x03AB,
            0x0446 => 0x0426,
            0x00FE => 0x00DE,
            0x00E7 => 0x00C7,
            0x03CA => 0x03AA,
            0x0441 => 0x0421,
            0x0432 => 0x0412,
            0x010F => 0x010E,
            0x00F8 => 0x00D8,
            0x0077 => 0x0057,
            0x011B => 0x011A,
            0x0074 => 0x0054,
            0x006A => 0x004A,
            0x045B => 0x040B,
            0x0456 => 0x0406,
            0x0103 => 0x0102,
            0x03BB => 0x039B,
            0x00F1 => 0x00D1,
            0x043D => 0x041D,
            0x03CC => 0x038C,
            0x00E9 => 0x00C9,
            0x00F0 => 0x00D0,
            0x0457 => 0x0407,
            0x0123 => 0x0122);
    }

    $uni = UTF8::to_unicode($str);

    if ( $uni === FALSE ) return FALSE;

    for( $i = 0, $c = count($uni); $i < $c; $i ++ )
    {
        if ( isset($UTF8_LOWER_TO_UPPER[$uni[$i]]) )
        {
            $uni[$i] = $UTF8_LOWER_TO_UPPER[$uni[$i]];
        }
    }

    return UTF8::from_unicode($uni);
}