PHP 8.6.0 Beta 1 is available for testing

mb_str_split

(PHP 7 >= 7.4.0, PHP 8)

mb_str_splitВозвращает массив символов многобайтовой строки

Описание

function 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
9
webmaster at redinfo dot co dot kr
3 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
5
info at ensostudio dot ru
5 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;
}
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /