CascadiaPHP 2024

str_split

(PHP 5, PHP 7, PHP 8)

str_splitKonvertiert einen String in ein Array

Beschreibung

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

Konvertiert eine Zeichenkette in ein Array.

Parameter-Liste

string

Die Eingabezeichenkette

length

Maximale Länge eines Teilstücks

Rückgabewerte

Wenn der optionale Parameter length angegeben wurde, enthält das zurückgegebene Array Elemente mit der in length definierten Länge. Eine Ausnahme bildet das letzte Teilstück, das kürzer sein kann, wenn die Zeichenkette nicht gleichmäßig aufgeteilt ist. Der Standardwert von length ist 1, was bedeutet, dass jeder Abschnitt ein Byte groß ist.

Fehler/Exceptions

Wenn der Parameter length kleiner ist als 1, wird ein ValueError ausgelöst.

Changelog

Version Beschreibung
8.2.0 Wenn string eine leere Zeichenkette ist, wird nun ein leeres Array zurückgegeben; davor wurde ein Array mit einer einzelnen leeren Zeichenkette zurückgegeben.
8.0.0 Wenn der Parameter length kleiner ist als 1, wird nun ein ValueError ausgelöst; davor wurde ein Fehler der Stufe E_WARNING ausgelöst und die Funktion gab false zurück.

Beispiele

Beispiel #1 Beispiel für die Verwendung von str_split()

<?php

$str
= "Hallo Freund";

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

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

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [0] => H
    [1] => a
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => e
    [9] => u
    [10] => n
    [11] => d
)

Array
(
    [0] => Hal
    [1] => lo
    [2] => Fre
    [3] => und
)

Anmerkungen

Hinweis:

Wenn eine Multibyte-kodierte Zeichenkette vorliegt, trennt str_split() in Bytes anstatt Zeichen. Mit mb_str_split() kann die Zeichenkette in Codepunkte zerlegt werden.

Siehe auch

  • mb_str_split() - Given a multibyte string, return an array of its characters
  • chunk_split() - Zerlegt einen String in Teile gleicher Länge
  • preg_split() - Zerlegt eine Zeichenkette anhand eines regulären Ausdrucks
  • explode() - Teilt eine Zeichenkette anhand einer Zeichenkette
  • count_chars() - Gibt Informationen über die in einem String enthaltenen Zeichen zurück
  • str_word_count() - Liefert Informationen über in einem String verwendete Worte
  • for

add a note

User Contributed Notes 3 notes

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

?>
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
-10
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