mb_str_split

(PHP 7 >= 7.4.0, PHP 8)

mb_str_split指定多字节字符串,返回其字符数组

说明

mb_str_split(string $string, int $length = 1, ?string $encoding = null): array

此函数将返回一个字符串数组,这是一个支持字符变长编码以及 1、2、4 字节字符定长编码版本的 str_split()。 如果指定了 length 参数,则将字符串按指定的字符长度(而不是字节长度)拆分为块。 可以选择指定 encoding 参数,这样是很好的做法。

参数

string

要拆分为单个字符或块的字符串。

length

如果指定,则返回的数组中的每个元素将会由多个字符而不是单个字符组成。

encoding

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

一个字符串,用于指定一种受支持的编码

返回值

mb_str_split() 返回字符串数组。

更新日志

版本 说明
8.0.0 现在 encoding 可以为 null。
8.0.0 此函数在失败时不再返回 false

参见

添加备注

用户贡献的备注 2 notes

up
7
webmaster at redinfo dot co dot kr
2 years ago
if( !function_exists('mb_str_split')){    function mb_str_split(  $string = '', $length = 1 , $encoding = null ){        if(!empty($string)){             $split = array();            $mb_strlen = mb_strlen($string,$encoding);            for($pi = 0; $pi < $mb_strlen; $pi += $length){                $substr = mb_substr($string, $pi,$length,$encoding);                if( !empty($substr)){                     $split[] = $substr;                }            }        }        return $split;    }}
up
6
info at ensostudio dot ru
4 years ago
Note: function return NULL if can't convert argument type.Polyfill PHP < 7.4 based on package "symfony/polyfill-mbstring":<?phpfunction mb_str_split($string, $split_length = 1, $encoding = null){    if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {        trigger_error('mb_str_split(): expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);        return null;    }    if (null !== $split_length && !\is_bool($split_length) && !\is_numeric($split_length)) {        trigger_error('mb_str_split(): expects parameter 2 to be int, '.\gettype($split_length).' given', E_USER_WARNING);        return null;    }    $split_length = (int) $split_length;    if (1 > $split_length) {        trigger_error('mb_str_split(): The length of each segment must be greater than zero', E_USER_WARNING);        return false;    }    if (null === $encoding) {        $encoding = mb_internal_encoding();    } else {        $encoding = (string) $encoding;    }        if (! in_array($encoding, mb_list_encodings(), true)) {        static $aliases;        if ($aliases === null) {            $aliases = [];            foreach (mb_list_encodings() as $encoding) {                $encoding_aliases = mb_encoding_aliases($encoding);                if ($encoding_aliases) {                    foreach ($encoding_aliases as $alias) {                        $aliases[] = $alias;                    }                }            }        }        if (! in_array($encoding, $aliases, true)) {            trigger_error('mb_str_split(): Unknown encoding "'.$encoding.'"', E_USER_WARNING);            return null;        }    }        $result = [];    $length = mb_strlen($string, $encoding);    for ($i = 0; $i < $length; $i += $split_length) {        $result[] = mb_substr($string, $i, $split_length, $encoding);    }    return $result;}?>
To Top