(PHP 5, PHP 7, PHP 8)
str_split — Convierte un string en un array
Convierte un string en un array.
stringEl string de entrada.
lengthLongitud máxima de cada elemento.
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.
Si length es menor que 1,
se lanzará un ValueError .
| 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 .
|
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 ejemplo anterior mostrará:
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 )
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.
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. "
}
?>