PHP 8.4.2 Released!

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

Функция возвращает массив строк и работает аналогично функции str_split(), но поддерживает кодировки с переменным размером символов и кодировки с фиксированным размером символов из 1, 2 или 4 байтов. Функция разобьёт строку на части заданной длины, если указали параметр length; длина отдельной части измеряется не в байтах, а в символах. Кодировку символов строки указывают в необязательном параметре encoding, и это хорошая практика.

Список параметров

string

Строка (string), которую требуется разбить на отдельные символы или части из двух или большего количества символов.

length

Функция составит и вернёт массив, каждый элемент которого состоит не из одного, а из заданного количества символов.

encoding

Параметр encoding устанавливает кодировку символов. Функция установит для параметра значение внутренней кодировки символов, если аргумент не передали или передали значение null.

Строка, которая указывает поддерживаемую кодировку.

Возвращаемые значения

Функция возвращает массив строк.

Список изменений

Версия Описание
8.0.0 Теперь параметр encoding принимает значение null.
8.0.0 Функция больше не возвращает false, если возникла ошибка.

Смотрите также

  • str_split() - Преобразовывает строку в массив
  • grapheme_str_split() - Разделяет строку на элементы массива
  • explode() - Разбивает строку разделителем

Добавить

Примечания пользователей 2 notes

up
8
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":
<?php
function 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;
}
?>
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;
}
}
To Top