> 6) + 192) . chr(($num & 63) + 128); } if ($num < 65536) { return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); } if ($num < 2097152) { return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); } return '?'; } public static function codeHex2utf($hex, $lo = true) { $num = hexdec($hex); if (($num < 128) && !$lo) { return '&#x' . $hex . ';'; } return static::code2utf($num, $lo); } }