博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
substr,mb_substr,iconv_substr,array_slice
阅读量:4970 次
发布时间:2019-06-12

本文共 1847 字,大约阅读时间需要 6 分钟。

通过一个例子来看其关系

/**+---------------------------------------------------------- * 字符串截取,支持中文和其他编码+---------------------------------------------------------- * @static * @access public+---------------------------------------------------------- * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset 编码格式 * @param string $suffix 截断显示字符+---------------------------------------------------------- * @return string+---------------------------------------------------------- */function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){    if(function_exists("mb_substr"))        return mb_substr($str, $start, $length, $charset);    elseif(function_exists('iconv_substr')) {        return iconv_substr($str,$start,$length,$charset);    }    $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); //通过preg_match_all将$str字符串进行编码,并返回给$match[0],按序排列组成数组 //通过array_slice将数组进行切割,然后通过join将切割后的数组的key进行连接    $slice = join("",array_slice($match[0], $start, $length));    if($suffix) return $slice."…";    return $slice;}

其中,join是implode的别名函数,将数组拼接成字符串,如果是关联数组,则只会进行key的连接

array_slice可以指定开始位置,和截取长度,进行切割

 

$str1 = "卧室字符串";echo mb_substr($str1,0,4,'utf-8')."\n";echo mb_strcut($str1,0,4,'utf-8')."\n";echo substr($str1,0,4)."\n";

上例输出:

卧室字符

卧�

 

可以看出substr是不支持中文的,但是mb_sbustr在安装php的时候需要安装mbstring扩展支持,windows服务器如果没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开

mb_substr和mb_struct 加上第三个参数后可以支持中文,但是mb_substr是按照字来截取的,mb_struct 是按字节截取的,但是两者都不会截取成半个字。。。

转载于:https://www.cnblogs.com/walter371/p/4183380.html

你可能感兴趣的文章
GNU/Linux超级本ZaReason Ultralap 440体验
查看>>
将github上托管的代码 在我的域名下运行
查看>>
【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C】Equalize
查看>>
【codeforces 767A】Snacktower
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
执行了的程序,才是你的程序.
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>