第1个回答 2013-10-30
//*************************************************************************
/*截取中英文混合字符串*/
//*************************************************************************
//二个英文字符对应一个中文字符,$len针对中文数字个数
//flag=0 为无省略点 {$str|ccStrLeft=###,8}|{$str|ccStrLeft=###,8,0}
//flag=1 为有省略点 {$str|ccStrLeft=###,8,1}
function ccStrLeft($str,$len,$flag=0){
$str=strip_tags($str); //去掉html.php标签 \\"right\\"\""=""
$from=0;
$str1=preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
//判断有几个字母
$str2=str_split($str1);
$count=0;
$len1=0;
foreach($str2 as $k=>$v){
if((ord($v) & 0x80)==0){ //英文结果为0,中文结果为128
$count++;
$len1=ceil($count/2);
}
}
$len=$len+($len1-1);
$str=preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
if($flag==1){$str=$str.'...';}
return $str;
}
第2个回答 2013-10-30
<?php
$string ="大苏打很深刻的骄傲了";
$new_str = mb_substr($string,2,4,"UTF-8");
//mb_substr.截取字符串php内置函数,参数分别为:需要截取的字符串,从第几个字符开始截取,截取几个字符,字符编码转换(utf-8/gbk/big5)等编码进行转换本回答被提问者采纳