君山 发表于 2020-10-26 22:37:29

Discuz dstrlen函数 针对uft-8进行特殊处理的strlen


/**
* 针对uft-8进行特殊处理的strlen
* @param string $str
* @return int
*/

function dstrlen($str) {
        if(strtolower(CHARSET) != 'utf-8') {
                return strlen($str);
        }
        $count = 0;
        for($i = 0; $i < strlen($str); $i++){
                $value = ord($str[$i]);
                if($value > 127) {
                        $count++;
                        if($value >= 192 && $value <= 223) $i++;
                        elseif($value >= 224 && $value <= 239) $i = $i + 2;
                        elseif($value >= 240 && $value <= 247) $i = $i + 3;
                  }
                    $count++;
        }
        return $count;
}
页: [1]
查看完整版本: Discuz dstrlen函数 针对uft-8进行特殊处理的strlen