php截取汉字字符串不乱码的函数

By | 2020年6月11日

php mb_substr 函数— 获取部分字符串:

适用版本(PHP 4 >= 4.0.6, PHP 5, PHP 7)

语法:mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) : string

官方说明:根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

通俗易懂一点的解释就是:之前使用substr()函数只可以截取字母,不能截取汉字,截取汉字会出现乱码,既截取汉字会出现把单个汉字只截取了一半的现象。

而现如今的mb_substr()函数就没有这个情况了,它可以截取汉字字符串,而不出现乱码现象。

参数:

str
从该 string 中提取子字符串。

start
如果 start 不是负数,返回的字符串会从 str 第 start 的位置开始,从 0 开始计数。举个例子,字符串 ‘abcdef’,位置 0 的字符是 ‘a’,位置 2 的字符是 ‘c’,以此类推。

如果 start 是负数,返回的字符串是从 str 末尾处第 start 个字符开始的。

length
str 中要使用的最大字符数。如果省略了此参数或者传入了 NULL,则会提取到字符串的尾部。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值:

mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。

实例:

将null作为长度传递不会使mb_substr使用默认值,而是将其解释为0。

<?php
mb_substr($str,$start,null,$encoding); //返回“”(空字符串)就像 substr()
?>

使用这个方法代替:

<?php
mb_substr($str,$start,mb_strlen($str),$encoding);
?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注