<?php/*** 截取中英文混合字符串* @param $sourcestr 需要截取的字符串* @param $start 开始位置,字符位置,* @param $cutlength 结束位置* @return 包含$start*/function cut_str($sourcestr, $start, $cutlength){$returnstr = '';$i = 0;// 根据字符位置,获取字节位置if ($start != 0) {$temp_str = cut_str($sourcestr, 0, $start);if ($temp_str) {$i = strlen($temp_str); # code...}}$n = 0;$str_length = strlen($sourcestr); //字符串的字节数while (($n < $cutlength) and ($i <= $str_length)) {$temp_str = substr($sourcestr, $i, 1);$ascnum = Ord($temp_str); //得到字符串中第$i位字符的ascii码if ($ascnum >= 224) {//如果ASCII位高与224,$returnstr = $returnstr . substr($sourcestr, $i, 3); //根据UTF-8编码规范,将3个连续的字符计为单个字符$i = $i + 3; //实际Byte计为3} elseif ($ascnum >= 192) {//如果ASCII位高与192,$returnstr = $returnstr . substr($sourcestr, $i, 2); //根据UTF-8编码规范,将2个连续的字符计为单个字符$i = $i + 2; //实际Byte计为2} else {//其他情况下$returnstr = $returnstr . substr($sourcestr, $i, 1);$i = $i + 1; //实际的Byte数计1个}$n ++; //字串长度计1}return $returnstr;}list($sourcestr, $start, $cutlength) = ['实际的Byte数计1个', 2, 7];echo $sourcestr.'<br>';echo $start.'<br>';echo cut_str($sourcestr, $start, $cutlength);
1200字范文,内容丰富有趣,写作的好帮手!