PHP 7.4.22 Released!

mb_str_split

(PHP 7 >= 7.4.0, PHP 8)

mb_str_splitBelirtilen çok baytlı dizgenin karakterlerini içeren bir dizi döndürür

Açıklama

mb_str_split(string $dizge, int $uzunluk = 1, ?string $kodlama = null): array

Bir dizgeler dizisi döndürür. 1, 2, veya 4 baytlık sabit boyutlular yanında değişken karakter boyutlu kodlamaları da destekleyen bir str_split() sürümüdür. uzunluk belirtilmişse dizge belirtilen bayt uzunlukta parçalara bölünür. kodlama belirtilmese de olur.

Değiştirgeler

dizge

Karakterleri ayrıştırılacak dizge.

uzunluk

Belirtilirse, dönen dizinin her elemanı tek baytlık karakterler değil, çok baytlı karakterler içerir.

kodlama

kodlama değiştirgesinde karakter kodlaması belirtilir. Belirtilmediği takdirde veya null ise dahili karakter kodlaması kullanılır.

Desteklenen kodlamalardan birini içeren bir dizge.

Dönen Değerler

mb_str_split() dizge dizisi döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0kodlama artık null olabiliyor.
8.0.0 Başarısızlık durumunda artık false dönmüyor.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
4
info at ensostudio dot ru
9 months 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
-1
vovan-ve at yandex dot ru
9 months ago
Lazy polyfill for UTF-8 only:

function utf8_str_split(string $input, int $splitLength = 1)
{
    $re = \sprintf('/\\G.{1,%d}+/us', $splitLength);
    \preg_match_all($re, $input, $m);
    return $m[0];
}
To Top