Вход Регистрация
Файл: sys/fnc/utf8_convert_case.php
Строк: 35
<?php

function utf8_convert_case($s$mode) {

    
#таблица конвертации регистра
    
static $trans = array(
        
#CASE_UPPER => CASE_LOWER
        #en (английский латиница)
        
"x41" => "x61"#a
        
"x42" => "x62"#b
        
"x43" => "x63"#c
        
"x44" => "x64"#d
        
"x45" => "x65"#e
        
"x46" => "x66"#f
        
"x47" => "x67"#g
        
"x48" => "x68"#h
        
"x49" => "x69"#i
        
"x4a" => "x6a"#j
        
"x4b" => "x6b"#k
        
"x4c" => "x6c"#l
        
"x4d" => "x6d"#m
        
"x4e" => "x6e"#n
        
"x4f" => "x6f"#o
        
"x50" => "x70"#p
        
"x51" => "x71"#q
        
"x52" => "x72"#r
        
"x53" => "x73"#s
        
"x54" => "x74"#t
        
"x55" => "x75"#u
        
"x57" => "x77"#w
        
"x56" => "x76"#v
        
"x58" => "x78"#x
        
"x59" => "x79"#y
        
"x5a" => "x7a"#z
        #ru (русский кириллица)
        
"xd0x81" => "xd1x91"
        
"xd0x90" => "xd0xb0"
        
"xd0x91" => "xd0xb1"
        
"xd0x92" => "xd0xb2"
        
"xd0x93" => "xd0xb3"
        
"xd0x94" => "xd0xb4"
        
"xd0x95" => "xd0xb5"
        
"xd0x96" => "xd0xb6"
        
"xd0x97" => "xd0xb7"
        
"xd0x98" => "xd0xb8"
        
"xd0x99" => "xd0xb9"
        
"xd0x9a" => "xd0xba"
        
"xd0x9b" => "xd0xbb"
        
"xd0x9c" => "xd0xbc"
        
"xd0x9d" => "xd0xbd"
        
"xd0x9e" => "xd0xbe"
        
"xd0x9f" => "xd0xbf"#п
        
"xd0xa0" => "xd1x80"
        
"xd0xa1" => "xd1x81"
        
"xd0xa2" => "xd1x82"
        
"xd0xa3" => "xd1x83"
        
"xd0xa4" => "xd1x84"
        
"xd0xa5" => "xd1x85"
        
"xd0xa6" => "xd1x86"
        
"xd0xa7" => "xd1x87"
        
"xd0xa8" => "xd1x88"
        
"xd0xa9" => "xd1x89"
        
"xd0xaa" => "xd1x8a"
        
"xd0xab" => "xd1x8b"
        
"xd0xac" => "xd1x8c"
        
"xd0xad" => "xd1x8d"
        
"xd0xae" => "xd1x8e"
        
"xd0xaf" => "xd1x8f"
        #tt (татарский, башкирский кириллица)
        
"xd2x96" => "xd2x97"#ж с хвостиком    &#1174; => &#1175;
        
"xd2xa2" => "xd2xa3"#н с хвостиком    &#1186; => &#1187;
        
"xd2xae" => "xd2xaf"#y                &#1198; => &#1199;
        
"xd2xba" => "xd2xbb"#h мягкое         &#1210; => &#1211;
        
"xd3x98" => "xd3x99"#э                &#1240; => &#1241;
        
"xd3xa8" => "xd3xa9"#o перечеркнутое  &#1256; => &#1257;
        #uk (украинский кириллица)
        
"xd2x90" => "xd2x91"#г с хвостиком
        
"xd0x84" => "xd1x94"#э зеркальное отражение
        
"xd0x86" => "xd1x96"#и с одной точкой
        
"xd0x87" => "xd1x97"#и с двумя точками
        #be (белорусский кириллица)
        
"xd0x8e" => "xd1x9e"#у с подковой над буквой
        #tr,de,es (турецкий, немецкий, испанский, французский латиница)
        
"xc3x84" => "xc3xa4"#a умляут          &#196; => &#228;  (турецкий)
        
"xc3x87" => "xc3xa7"#c с хвостиком     &#199; => &#231;  (турецкий, французский)
        
"xc3x91" => "xc3xb1"#n с тильдой       &#209; => &#241;  (турецкий, испанский)
        
"xc3x96" => "xc3xb6"#o умляут          &#214; => &#246;  (турецкий)
        
"xc3x9c" => "xc3xbc"#u умляут          &#220; => &#252;  (турецкий, французский)
        
"xc4x9e" => "xc4x9f"#g умляут          &#286; => &#287;  (турецкий)
        
"xc4xb0" => "xc4xb1"#i c точкой и без  &#304; => &#305;  (турецкий)
        
"xc5x9e" => "xc5x9f"#s с хвостиком     &#350; => &#351;  (турецкий)
        #hr (хорватский латиница)
        
"xc4x8c" => "xc4x8d"#c с подковой над буквой
        
"xc4x86" => "xc4x87"#c с ударением
        
"xc4x90" => "xc4x91"#d перечеркнутое
        
"xc5xa0" => "xc5xa1"#s с подковой над буквой
        
"xc5xbd" => "xc5xbe"#z с подковой над буквой
        #fr (французский латиница)
        
"xc3x80" => "xc3xa0"#a с ударением в др. сторону
        
"xc3x82" => "xc3xa2"#a с крышкой
        
"xc3x86" => "xc3xa6"#ae совмещенное
        
"xc3x88" => "xc3xa8"#e с ударением в др. сторону
        
"xc3x89" => "xc3xa9"#e с ударением
        
"xc3x8a" => "xc3xaa"#e с крышкой
        
"xc3x8b" => "xc3xab"
        
"xc3x8e" => "xc3xae"#i с крышкой
        
"xc3x8f" => "xc3xaf"#i умляут
        
"xc3x94" => "xc3xb4"#o с крышкой
        
"xc5x92" => "xc5x93"#ce совмещенное
        
"xc3x99" => "xc3xb9"#u с ударением в др. сторону
        
"xc3x9b" => "xc3xbb"#u с крышкой
        
"xc5xb8" => "xc3xbf"#y умляут
            #xx (другой язык)
            #"" => "",  #
    
);
    
#d($trans);
    #вариант с str_replace() должен работать быстрее, чем с strtr()
    
if ($mode == CASE_UPPER) {
        if (
function_exists('mb_strtoupper')) {
            return 
mb_strtoupper($s'utf-8');
        }
        if (
preg_match('/^[x00-x7e]*$/'$s)) {
            return 
strtoupper($s);
        }
        
#может, так быстрее? (:TODO:)
        
strtr($sarray_flip($trans));
        
#$s = str_replace(array_values($trans), array_keys($trans), $s);
    
} elseif ($mode == CASE_LOWER) {
        if (
function_exists('mb_strtolower')) {
            return 
mb_strtolower($s'utf-8');
        }
        if (
preg_match('/^[x00-x7e]*$/'$s)) {
            return 
strtolower($s);
        }
        
#может, так быстрее? (:TODO:)
        
strtr($s$trans);
        
#$s = str_replace(array_keys($trans), array_values($trans), $s);
    
} else {
        
trigger_error('Parameter 2 should be a constant of CASE_LOWER or CASE_UPPER!'E_USER_WARNING);
        return 
$s;
    }

    return 
$s;
}

function 
utf8_lowercase($s) {
    return 
utf8_convert_case($sCASE_LOWER);
}

function 
utf8_uppercase($s) {
    return 
utf8_convert_case($sCASE_UPPER);
}
Онлайн: 1
Реклама