Today, I saw the chr () ord () Chinese text truncation garbled problem. I think it is quite good. I 'd like to share it with you. if you are interested, I can try it out and see how it works.
The code is as follows:
$ Lenth = 19;
$ Str = "how to display only the first few words in a long news title, which is replaced? ";
Echo strlen ($ str) <= $ lenth? $ Str: (substr ($ str, 0, $ lenth). chr (0 )."....");
?>
The code is as follows:
/*
@ Another method: Use the ord () function:
@ Applicable to gb2312 encoding:
*/
$ Str = "how to display only the first few words in a long news title, which is replaced? ";
Function gb2312_substr ($ str, $ limit ){
$ Restr = '';
For ($ I = 0; $ I <$ limit-3; $ I ++ ){
$ Restr. = ord ($ str [$ I])> 127? $ Str [$ I]. $ str [++ $ I]: $ str [$ I];
}
Return $ restr;
}
/*
@ The following only applies to UTF-8 encoding;
*/
Function utf8_substr ($ str, $ limit ){
$ Restr = '';
For ($ I = 0; $ I <$ limit-3; $ I ++ ){
$ Restr. = ord ($ str [$ I])> 127? $ Str [$ I]. $ str [++ $ I]. $ str [++ $ I]: $ str [$ I];
}
Return $ restr;
}
// Explain the first one above: chr (0) is not null, null is nothing, and chr (0) is 0. The hexadecimal value is 0x00, indicating that the binary value is 00000000. although chr (0) does not show anything, it is a character. Although chr (0) does not display anything, it is a character. When a Chinese character is truncated, according to the encoding rules, he always needs to pull the other characters behind it as an explanation of the Chinese character. this is the cause of garbled characters.
?>