Symfony\Polyfill\Mbstring

Mbstring::mb_str_split │ public static │ CF7 1.0

Метод класса: Mbstring{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

$result = Mbstring::mb_str_split( $string, $split_length, $encoding );
$string(обязательный)
.
$split_length
.
По умолчанию: 1
$encoding
.
По умолчанию: null

Код Mbstring::mb_str_split() CF7 6.2.4.1

public static 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 (1 > $split_length = (int) $split_length) {
        if (80000 > \PHP_VERSION_ID) {
            trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);

            return false;
        }

        throw new \ValueError('Argument #2 ($length) must be greater than 0');
    }

    if (80300 <= \PHP_VERSION_ID && 0x3FFFFFFF < $split_length) {
        throw new \ValueError('Argument #2 ($length) is too large');
    }

    if (null === $encoding) {
        $encoding = mb_internal_encoding();
    }

    if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
        $string = (string) $string;

        if (\strlen($string) <= $split_length) {
            return '' === $string ? [] : [$string];
        }

        $rx = '/(';
        while (65535 < $split_length) {
            $rx .= '.{65535}';
            $split_length -= 65535;
        }
        $rx .= '.{'.$split_length.'})/Aus';

        return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
    }

    $result = [];
    $length = mb_strlen($string, $encoding);

    for ($i = 0; $i < $length; $i += $split_length) {
        $result[] = mb_substr($string, $i, $split_length, $encoding);
    }

    return $result;
}