function cut_str($sourcestr,$cutlength) {
$returnstr ='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//Number of bytes of string
while (($n<$ cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//Get the string The ascii code of the $i-th character in
if ($ascnum>=224) //If the ASCII bit is higher than 224,
{
//According to the UTF-8 encoding specification, 3 consecutive Characters are counted as a single character
$returnstr=$returnstr.substr($sourcestr,$i,3);
$i=$i 3; //The actual Byte is counted as 3
$n; // String length is 1
}
elseif ($ascnum>=192) //If the ASCII bit height is equal to 192,
{
//According to the UTF-8 encoding specification, combine 2 consecutive Characters are counted as a single character
$returnstr=$returnstr.substr($sourcestr,$i,2);
$i=$i 2; //The actual Byte is counted as 2
$n; // String length is 1
}
elseif ($ascnum>=65 && $ascnum<=90) //If it is an uppercase letter,
{
$returnstr=$returnstr.substr($sourcestr ,$i,1);
$i=$i 1; //The actual Byte number is still counted as 1
$n; //But considering the overall appearance, capital letters are counted as one high-bit character
}
else //In other cases, including lowercase letters and half-width punctuation marks,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$ i 1; //The actual Byte count is 1
$n=$n 0.5; //Lowercase letters and half-width punctuation are half the width of high-bit characters...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr . "...";//Add an ellipsis at the end when the length exceeds
}
return $returnstr;
}