PHP 8.4.2 Released!

str_split

(PHP 5, PHP 7, PHP 8)

str_splitПреобразовывает строку в массив

Описание

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

Функция разбивает строку на элементы массива.

Список параметров

string

Входная строка.

length

Максимальная длина части.

Возвращаемые значения

Функция возвращает массив строк. Функция разобьёт строку на части заданной длины, если указали необязательный аргумент length. Длина каждой части будет равна значению аргумента length, за исключением последней части, длина которой будет меньше, если строка делится неравномерно. Значение параметра length по умолчанию — 1 байт.

Ошибки

Функция выбросит ошибку ValueError, если значение аргумента length окажется меньше 1.

Список изменений

Версия Описание
8.2.0 Функция теперь возвращает пустой массив (array), если параметр string не указали; раньше возвращался массив (array), который содержал одну пустую строку.
8.0.0 Функция теперь выбросит ошибку ValueError, если значение аргумента length окажется меньше 1; раньше вместо этого функция вызывала ошибку уровня E_WARNING и возвращала false.

Примеры

Пример #1 Пример преобразования строки в массив функцией str_split()

<?php

$str
= "Hello Friend";

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

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

?>

Результат выполнения приведённого примера:

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
)

Примечания

Замечание:

Функция str_split() разбивает строки в многобайтовых кодировках по байтам, а не по символам. На кодовые точки строку разбивает функция mb_str_split(). Для разбиения строки на кластеры графем вызывают функцию grapheme_str_split().

Смотрите также

  • mb_str_split() - Возвращает массив символов многобайтовой строки
  • grapheme_str_split() - Разделяет строку на элементы массива
  • chunk_split() - Разбивает строку на фрагменты
  • preg_split() - Разбивает строку по регулярному выражению
  • explode() - Разбивает строку разделителем
  • count_chars() - Возвращает информацию о символах, которые входят в строку
  • str_word_count() - Возвращает информацию о словах, которые входят в строку
  • Цикл for

Добавить

Примечания пользователей 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