PHP 8.4.0 RC4 available for testing

str_split

(PHP 5, PHP 7, PHP 8)

str_splitConvertit une chaîne de caractères en tableau

Description

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

Convertit une chaîne de caractères en tableau.

Liste de paramètres

string

La chaîne d'entrée.

length

Longueur maximale de chaque élément.

Valeurs de retour

Si le paramètre optionnel length est spécifié, le tableau retourné sera découpé en sous-parties, chacune de taille length, à l'exception de la dernière sous-partie qui peut être plus courte si la chaîne ne se divise pas de manière égale. La valeur par défaut de length est 1, ce qui signifie que chaque sous-partie aura une taille d'un octet.

Erreurs / Exceptions

Si length est plus petit que 1, une ValueError sera déclenchée.

Historique

Version Description
8.2.0 Si string est vide, un tableau vide est désormais retourné. Auparavant, un tableau contenant une seule chaîne vide était retourné.
8.0.0 Si length est plus petit que 1, une ValueError sera déclenchée; auparavant, une erreur de type E_WARNING était emise, et la fonction retournait false.

Exemples

Exemple #1 Exemple avec str_split()

<?php

$str
= "Hello Friend";

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

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

?>

L'exemple ci-dessus va afficher :

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
)

Notes

Note:

str_split() va effectuer la découpe dans les bits, plutôt que dans les caractères lors de l'utilisation avec une chaîne de caractères encodée en multioctets. mb_str_split() peut être utilisé pour diviser la chaîne en points de code. grapheme_str_split() peut être utilisé pour diviser la chaîne en clusters de graphèmes.

Voir aussi

add a note

User Contributed Notes 1 note

up
4
Julian
1 year 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