mb_str_split

(PHP 7 >= 7.4.0, PHP 8)

mb_str_splitPara una cadena multibyte dada, devuelve un array de sus caracteres

Descripción

mb_str_split(string $string, int $length = 1, ?string $encoding = null): array

Esta función devolverá un array de strings, es una versión de str_split() con soporte para codificaciones de tamaño de carácter variable así como para codificaciones de tamaño fijo de caracteres de 1, 2 o 4 bytes. Si el parámetro length es especificado, la cadena se divide en bloques de la longitud especificada en caracteres (y no en bytes). El parámetro encoding es opcional pero se recomienda proporcionarlo.

Parámetros

string

El string a dividir en caracteres o en trozos.

length

Si se especifica, cada elemento del array devuelto estará compuesto por múltiples caracteres en lugar de un solo carácter.

encoding

El parámetro encoding es la codificación de caracteres. Si es omitido o null, será usado el valor de la codificación de caracteres interna.

Una cadena de caracteres que especifica uno de los encodings soportados.

Valores devueltos

mb_str_split() devuelve un array de strings.

Historial de cambios

Versión Descripción
8.0.0 encoding ahora es nullable.
8.0.0 Esta función ya no devuelve false en caso de fallo.

Ver también

add a note

User Contributed Notes 2 notes

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;
}
}
up
6
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;
}
?>
To Top