Tout d'abord, veuillez noter : il existe actuellement de nombreux codes pour ce problème sur Internet, mais beaucoup d'entre eux sont copiés et collés sans ma propre pratique, et le code présente des problèmes logiques. Le code suivant est écrit par. moi-même.
Pas grand chose à dire
/** * 该函数是对于utf8编码 * @author 2582308253@qq.com * @param string $str * @param int $start * @param int $length * @return string * @copyright 2017年2月27日下午1:46:10 */ function gbsubstr2($str, $start, $length) { $length = abs($length); $strLen = strlen($str); $len = $start + $length; $newStr = ''; for($i = $start; $i < $len && $i < $strLen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { //utf8编码中一个汉字是占据3个字节的,对于其他的编码的字符串,中文占据的字节各有不同,自己需要去修改这个数a $newStr .= substr($str, $i, 3);//此处a=3; $i+=2; $len += 2; //截取了三个字节之后,截取字符串的终止偏移量也要随着每次汉字的截取增加a-1; } else { $newStr .= substr($str, $i, 1); } } return $newStr; }
Pour plus d'articles sur l'interception personnalisée php des chaînes chinoises-utf8, veuillez faire attention au site Web PHP chinois !
Articles associés :
Une petite fonction qui insère une chaîne à une position spécifiée dans la chaîne
Explication détaillée du code de la formule de calcul du format de chaîne via eval en php