实现中文字符串截取无乱码的方法

来源:互联网 发布:中国软件杯影响力 编辑:程序博客网 时间:2024/05/17 07:35
方法一:使用php内置函数mb_substr();mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字符数 $encoding,网页编码,如utf-8,GB2312,GBK ,如果省略,则会使用内部字符编码<?php$str = "安徽中医PHP学院";echo mb_substr($str,2,4,'utf8');//中医PH,从第二个字符开始截取四个字符?>方法二:自定义函数;<?phpheader('Content-Type:text/html;charset:utf8');
//utf8编码字符串截取无乱码
function substr_utf8($str,$start,$length=null){
    return join("",array_slice(preg_split("//u",$str,-1,PREG_SPLIT_NO_EMPTY),$start,$length));
}
$str = "安徽中医PHP学院";echo mb_substr($str,2,4);//中医PH,从第二个字符开始截取四个字符

?>

array_slice() 函数在数组中根据条件取出一段值,并返回。

array_slice(array,start,length,preserve)

参数描述array必需。规定数组。start

必需。数值。规定取出元素的开始位置。 0 = 第一个元素。

如果该值设置为正数,则从前往后开始取。

如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。

length

可选。数值。规定被返回数组的长度。

如果该值设置为整数,则返回该数量的元素。

如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。

如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。

preserve

可选。规定函数是保留键名还是重置键名。可能的值:

  • true - 保留键名
  • false - 默认。重置键名

 
阅读全文
0 0