The PHP Online Conference 2021

mb_str_split

(PHP 7 >= 7.4.0)

mb_str_splitGiven a multibyte string, return an array of its characters

Descrierea

mb_str_split ( string $string [, int $split_length = 1 [, string $encoding = mb_internal_encoding() ]] ) : array

This function will return an array of strings, it is a version of str_split() with support for encodings of variable character size as well as fixed-size encodings of 1,2 or 4 byte characters. If the split_length parameter is specified, the string is broken down into chunks of the specified length in characters (not bytes). The encoding parameter can be optionally specified and it is good practice to do so.

Parametri

string

The string to split into characters or chunks.

split_length

If specified, each element of the returned array will be composed of multiple characters instead of a single character.

encoding

Parametrul encoding reprezintă codificarea caracterelor. Dacă el este omis, va fi utilizată valoarea internă a codificării caracterelor.

A string specifying one of the supported encodings.

Valorile întoarse

mb_str_split() returns an array of strings, sau FALSE în cazul eșecului.

A se vedea și

add a note add a note

User Contributed Notes 1 note

up
0
info at ensostudio dot ru
11 days 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;
}
?>
To Top