字符和unicode互转

发表日期:2022-08-06 16:03:20 | 来源: | | 浏览(739) 分类:PHP杂项

/**
 * 将unicode转换成字符
 * @param int $unicode
 * @return string UTF-8字符
 **/
function unicode2Char($unicode)
{
    if ($unicode < 128) return chr($unicode);
    if ($unicode < 2048) return chr(($unicode >> 6) + 192) .
        chr(($unicode & 63) + 128);
    if ($unicode < 65536) return chr(($unicode >> 12) + 224) .
        chr((($unicode >> 6) & 63) + 128) .
        chr(($unicode & 63) + 128);
    if ($unicode < 2097152) return chr(($unicode >> 18) + 240) .
        chr((($unicode >> 12) & 63) + 128) .
        chr((($unicode >> 6) & 63) + 128) .
        chr(($unicode & 63) + 128);
    return false;
}

/**
 * 将字符转换成unicode
 * @param string $char 必须是UTF-8字符
 * @return int
 **/
function char2Unicode($char)
{
    switch (strlen($char)) {
        case 1 :
            return ord($char);
        case 2 :
            return (ord($char{1}) & 63) |
                ((ord($char{0}) & 31) << 6);
        case 3 :
            return (ord($char{2}) & 63) |
                ((ord($char{1}) & 63) << 6) |
                ((ord($char{0}) & 15) << 12);
        case 4 :
            return (ord($char{3}) & 63) |
                ((ord($char{2}) & 63) << 6) |
                ((ord($char{1}) & 63) << 12) |
                ((ord($char{0}) & 7) << 18);
        default :
            trigger_error('Character is not UTF-8!', E_USER_WARNING);
            return false;
    }
}


集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。