str_split

(PHP 5, PHP 7, PHP 8)

str_splitConvierte un string en un array

Descripción

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

Convierte un string en un array.

Parámetros

string

El string de entrada.

length

Longitud máxima de cada elemento.

Valores devueltos

Si el argumento opcional length es especificado, el array devuelto será dividido en subpartes, cada una de tamaño length, a excepción de la última subparte que puede ser más corta si el string no se divide de manera equitativa. El valor por omisión de length es 1, lo que significa que cada subparte tendrá un tamaño de un byte.

Errores/Excepciones

Si length es menor que 1, se lanzará un ValueError.

Historial de cambios

Versión Descripción
8.2.0 Si string está vacío, ahora se devuelve un array vacío. Anteriormente, se devolvía un array que contenía un único string vacío.
8.0.0 Si length es menor que 1, se lanzará un ValueError; anteriormente, se emitía un error de tipo E_WARNING y la función devolvía false.

Ejemplos

Ejemplo #1 Ejemplo con str_split()

<?php

$str
= "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

?>

El resultado del ejemplo sería:

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
)

Array
(
    [0] => Hel
    [1] => lo
    [2] => Fri
    [3] => end
)

Notas

Nota:

str_split() realizará la división a nivel de bits, en lugar de a nivel de caracteres al utilizarse con un string codificado en multibytes. mb_str_split() puede ser utilizado para dividir el string en puntos de código. grapheme_str_split() puede ser utilizado para dividir el string en clusters de grafemas.

Ver también

add a note

User Contributed Notes 1 note

up
5
Julian
2 years ago
The function str_split() is not 'aware' of words. Here is an adaptation of str_split() that is 'word-aware'.

<?php

$array
= str_split_word_aware(
'In the beginning God created the heaven and the earth. And the earth was without form, and void; and darkness was upon the face of the deep.',
32
);

var_dump($array);

/**
* This function is similar to str_split() but this function keeps words intact; it never splits through a word.
*
* @return array<int, string>
*/
function str_split_word_aware(string $string, int $maxLengthOfLine): array
{
if (
$maxLengthOfLine <= 0) {
throw new
RuntimeException(sprintf('The function %s() must have a max length of line at least greater than one', __FUNCTION__));
}

$lines = [];
$words = explode(' ', $string);

$currentLine = '';
$lineAccumulator = '';
foreach (
$words as $currentWord) {

$currentWordWithSpace = sprintf('%s ', $currentWord);
$lineAccumulator .= $currentWordWithSpace;
if (
strlen($lineAccumulator) < $maxLengthOfLine) {
$currentLine = $lineAccumulator;
continue;
}

$lines[] = $currentLine;

// Overwrite the current line and accumulator with the current word
$currentLine = $currentWordWithSpace;
$lineAccumulator = $currentWordWithSpace;
}

if (
$currentLine !== '') {
$lines[] = $currentLine;
}

return
$lines;
}

?>

OUTPUT:

<?php

array(5) {
[
0]=> string(29) "In the beginning God created "
[1]=> string(30) "the heaven and the earth. And "
[2]=> string(28) "the earth was without form, "
[3]=> string(27) "and void; and darkness was "
[4]=> string(27) "upon the face of the deep. "
}

?>
To Top