Php implements a summary of Chinese Character truncation and anti-garbled methods,
You may often use string Truncation in your own programs, but you may encounter garbled characters when intercepting Chinese strings. This is a headache. Next we will introduce two methods to prevent garbled characters when intercepting Chinese strings.
First, a self-written function is easy to use.
With this function, no garbled characters will occur.
/*** Supports Chinese string truncation */function msubstr ($ str, $ start = 0, $ length, $ charset = "UTF-8", $ suffix = true) {switch ($ charset) {case 'utf-8': $ char_len = 3; break; case 'utf8': $ char_len = 3; break; default: $ char_len = 2;} // if (strlen ($ str) <= ($ length * $ char_len) {return $ str ;} if (function_exists ("mb_substr") {$ slice = mb_substr ($ str, $ start, $ length, $ charset );} else if (function_exists ('iconv _ substr') {$ slice = iconv_substr ($ str, $ start, $ length, $ charset );} 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);} if ($ suffix) return $ slice ;}
The second is the built-in function mb_substr in php.
The encoding format of the string to be intercepted can effectively prevent garbled characters.
Description
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] ) <?php function substr_unicode($str, $s, $l = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l)); } $str = "Büyük"; $s = 0; // start from "0" (nth) char $l = 3; // get "3" chars echo substr($str, $s, $l) ."\n"; echo mb_substr($str, $s, $l) ."\n"; echo substr_unicode($str, $s, $l); ?>
The above is all the content of this article. I hope you will like it.