str_split

(PHP 5, PHP 7, PHP 8)

str_splitConvert a string to an array

Descrição

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

Converts a string to an array.

Parâmetros

string

The input string.

length

Maximum length of the chunk.

Valor Retornado

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.

Erros/Exceções

If length is less than 1, a ValueError will be thrown.

Registro de Alterações

Versão Descrição
8.2.0 If 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.

Exemplos

Exemplo #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);

?>

O exemplo acima produzirá:

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() will split into bytes, rather than characters when dealing with a multi-byte encoded string. Use mb_str_split() to split the string into code points.

Veja Também

add a note add a note

User Contributed Notes 3 notes

up
0
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. "
}

?>
up
-7
lskatz at gmail dot com
16 years ago
A good use of str_split is reverse translating an amino acid sequence.

<?php
/* reverse translate an aa sequence using its dna counterpart */
function reverseTranslate($aaSeq,$ntSeq){
 
$nt=str_split($ntSeq,3);
 
$aa=str_split($aaSeq,1);
 
$gapChar=array('*','-');

 
$numAa=count($aa);
 
$ntIndex=0;
 
$newNtSeq="";
  for(
$i=0;$i<$numAa;$i++){
   
// if the aa is a gap, then just put on a gap character
   
if(in_array($aa[$i],$gapChar)){
     
$newNtSeq.='---';
    }
    else{
     
$newNtSeq.=$nt[$ntIndex];
     
$ntIndex++;
    }
  }
  return
$newNtSeq;
}
?>
up
-7
alex-glebe at mail dot ru
1 year ago
Empty string Does'n returns Empty array!

$arr0 = str_split("");
print_r($arr0);

Array
(
    [0] =>
)
To Top