W3docs

str_split()

Artículo sobre la función PHP str_split(), que divide una cadena en un array. Se explica la sintaxis, el parámetro de longitud y su uso.

La función str_split() de PHP divide una cadena en un array de partes más pequeñas. Por defecto, cada parte es un único carácter, pero también puedes solicitar fragmentos de longitud fija. Es la función ideal cuando necesitas iterar sobre una cadena carácter por carácter o procesarla en bloques de igual tamaño.

Esta página cubre la sintaxis, el parámetro de longitud de fragmento, el valor que retorna y el problema con cadenas multibyte que confunde a la mayoría de los desarrolladores.

Sintaxis

str_split(string $string, int $length = 1): array

La función acepta dos parámetros:

  • $string — la cadena a dividir. Obligatorio.
  • $length — la longitud de cada fragmento, en bytes. Opcional; el valor predeterminado es 1. Debe ser 1 o mayor (un valor menor que 1 genera un ValueError en PHP 8.0+).

Retorna un array de fragmentos de cadena. Si $string está vacía, el resultado es un array vacío ([]) en PHP 8.2 y versiones posteriores. El último fragmento puede ser más corto que $length cuando la longitud de la cadena no es un múltiplo exacto de este valor.

División en caracteres individuales

Sin un segundo argumento, str_split() retorna un elemento del array por carácter. Esto es útil para recorrer cada carácter o contar caracteres por categoría.

php— editable, runs on the server

El resultado es un array donde cada carácter tiene su propio índice:

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] => ,
    [6] =>  
    [7] => W
    [8] => o
    [9] => r
    [10] => l
    [11] => d
    [12] => !
)

División en fragmentos de longitud fija

Pasa un $length para agrupar los caracteres en fragmentos de ese tamaño. Esto es útil para formatear cadenas, como dividir un número de tarjeta en grupos, o procesar datos binarios en bloques fijos.

<?php
$string = "Hello, World!";
$chunks = str_split($string, 3);
print_r($chunks);
?>

La cadena tiene 13 caracteres, por lo que se divide en cuatro fragmentos de 3 más un fragmento final de 1:

Array
(
    [0] => Hel
    [1] => lo,
    [2] =>  Wo
    [3] => rld
    [4] => !
)

Cuidado con las cadenas multibyte

str_split() trabaja con bytes, no con caracteres. Para texto ASCII un byte equivale a un carácter, por lo que el comportamiento predeterminado parece una división por carácter. Pero los caracteres UTF-8 como é o los emojis ocupan varios bytes, y str_split() los fragmentará, produciendo partes inválidas:

<?php
print_r(str_split("héllo"));
?>
Array
(
    [0] => h
    [1] => Ã
    [2] => ©
    [3] => l
    [4] => l
    [5] => o
)

La é quedó dividida en dos bytes rotos. Cuando necesites dividir una cadena UTF-8 por caracteres reales, usa mb_str_split() en su lugar — es consciente de los multibyte y mantiene cada carácter intacto.

Cuándo usar str_split() vs. explode()

Usa str_split() cuando quieras dividir una cadena en una posición o longitud fija — cada carácter individual, o cada N bytes. Usa explode() cuando quieras dividir por un delimitador como una coma o un espacio. Para reconstruir una cadena a partir de un array, consulta implode(), y para dividir con una expresión regular, consulta preg_split().

Práctica

Práctica
¿Qué hace la función 'str_split()' de PHP?
¿Qué hace la función 'str_split()' de PHP?
Was this page helpful?