/**
+ ----------------------------------------------------------
* String truncation, supporting Chinese and other Encoding
+ ----------------------------------------------------------
* @ Static
* @ Access public
+ ----------------------------------------------------------
* @ Param string $ STR string to be converted
* @ Param string $ start position
* @ Param string $ length truncation Length
* @ Param string $ charset encoding format
* @ Param string $ suffix truncated display characters
+ ----------------------------------------------------------
* @ Return string
+ ----------------------------------------------------------
*/
FunctionMsubstr ($ Str,$ Start,$ Length,$ Charset= "UTF-8 ",$ Suffix=True)
{
If(Function_exists("Mb_substr ")){
$ Slice= Mb_substr ($ Str,$ Start,$ Length,$ Charset);
}Elseif(Function_exists('Iconv _ substr ')){
$ Slice=Iconv_substr($ Str,$ Start,$ Length,$ Charset);
If(False===$ Slice){
$ Slice= '';
}
}Else{
$ Re['Utf-8'] = "/[\ x01-\ x7f] | [\ xc2-\ xdf] [\ X80-\ xbf] | [\ xe0-\ XeF] [\ X80-\ xbf] {2} | [\ xf0-\ xFF] [\ X80-\ xbf] {3 }/";
$ Re['Gb2312'] = "/[\ x01-\ x7f] | [\ xb0-\ xf7] [\ xa0-\ xfe]/";
$ Re['Gbk'] = "/[\ x01-\ x7f] | [\ x81-\ xfe] [\ X40-\ xfe]/";
$ Re['Big5'] = "/[\ x01-\ x7f] | [\ x81-\ xfe] ([\ X40-\ x7e] | \ xA1-\ xfe]) /";
Preg_match_all($ Re[$ Charset],$ Str,$ Match);
$ Slice=Join("",Array_slice($ Match[0],$ Start,$ Length));
}
Return $ Suffix?$ Slice.'...':$ Slice;
}