(PHP 5, PHP 7, PHP 8)
str_split — Convert a string to an array
Parametersstring
The input string.
length
Maximum length of the chunk.
If the optional length
parameter is specified, the returned array will be broken down into chunks with each being length
in length, except the final chunk which may be shorter if the string does not divide evenly. The default length
is 1
, meaning every chunk will be one byte in size.
If length
is less than 1
, a ValueError will be thrown.
string
is empty an empty array is now returned. Previously an array containing a single empty string was returned. 8.0.0 If length
is less than 1
, a ValueError will be thrown now; previously, an error of level E_WARNING
has been raised instead, and the function returned false
. Examples
Example #1 Example uses of str_split()
<?php
$str
= "Hello Friend";$arr1 = str_split($str);
$arr2 = str_split($str, 3);print_r($arr1);
print_r($arr2);?>
The above example will output:
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
Julian ¶Note:
str_split() will split into bytes, rather than characters when dealing with a multi-byte encoded string. mb_str_split() can be used to split the string into code points. grapheme_str_split() can be used to split the string into grapheme clusters.
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);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;$currentLine = $currentWordWithSpace;
$lineAccumulator = $currentWordWithSpace;
}
if (
$currentLine !== '') {
$lines[] = $currentLine;
}
return
$lines;
}?>
OUTPUT:
<?phparray(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. "
}?>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3