(PHP 4, PHP 5, PHP 7, PHP 8)
substr — Liefert einen Teil eines Strings
Gibt den Teil von string
zurück, der durch die
Parameter offset
und length
definiert wurde.
string
Der Eingabestring.
offset
Wenn offset
nicht negativ ist, beginnt der
zurückgegebene String an der offset
-Position von
string
, angefangen bei 0 (Null). So ist z. B.
im String 'abcdef
' das Zeichen an der Position
0
gleich 'a
', das Zeichen an der
Position 2
ist 'c
' usw.
Ist offset
negativ, beginnt der zurückgegebene
String bei dem in offset
festgelegten Zeichen
vom Ende von string
aus betrachtet.
Ist string
kürzer als
offset
Zeichen, wird ein leerer String
zurückgegeben.
Beispiel #1 Einen negativen offset
-Wert verwenden
<?php
$rest = substr("abcdef", -1); // gibt "f" zurück
$rest = substr("abcdef", -2); // gibt "ef" zurück
$rest = substr("abcdef", -3, 1); // gibt "d" zurück
?>
length
Ist length
angegeben und positiv, enthält der
zurückgegebene String höchstens length
Zeichen
ab offset
(abhängig von der Länge von
string
).
Ist length
angegeben und negativ, werden
genau so viele Zeichen vom Ende von string
abgeschnitten (nachdem die Startposition ermittelt wurde, wenn
offset
negativ ist). Gibt
offset
die Position der Abtrennung oder dahinter
an, wird ein leerer String zurückgegeben.
Wenn length
gegeben ist und den Wert
0
hat, wird ein leerer String zurückgegeben.
Wenn length
ausgelassen wird oder null
ist,
wird der Teilstring beginnend von offset
bis zum
Ende des Strings zurückgegeben.
Beispiel #2 Negativen length
-Wert verwenden
<?php
$rest = substr("abcdef", 0, -1); // gibt "abcde" zurück
$rest = substr("abcdef", 2, -1); // gibt "cde" zurück
$rest = substr("abcdef", 4, -4); // gibt "" zurück; vor PHP 8.0.0 wurde false zurückgegeben
$rest = substr("abcdef", -3, -1); // gibt "de" zurück
?>
Gibt den extrahierten Teil von string
oder einen
leeren String zurück.
Version | Beschreibung |
---|---|
8.0.0 |
length ist jetzt nullable (akzeptiert den
null -Wert). Wenn length explizit auf null
gesetzt wird, gibt die Funktion einen Teilstring zurück, der am Ende
des Strings endet, während sie vorher einen leeren String zurückgegeben
hat.
|
8.0.0 |
Die Funktion gibt einen leeren String zurück, wo sie vorher false
zurückgegeben hat.
|
Beispiel #3 Generelle Verwendung von substr()
<?php
echo substr('abcdef', 1); // bcdef
echo substr("abcdef", 1, null); // bcdef; vor PHP 8.0.0 wurde ein leerer String zurückgegeben
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
// Auf ein einzelnes Zeichen eines Strings kann auch mittels
// eckiger Klammern zugegriffen werden
$string = 'abcdef';
echo $string[0]; // a
echo $string[3]; // d
echo $string[strlen($string)-1]; // f
?>
Beispiel #4 substr()-Typumwandlungs-Verhalten
<?php
class apple {
public function __toString() {
return "green";
}
}
echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'
Beispiel #5 Ungültiger Zeichenbereich
Wenn ein ungültiger Zeichenbereich angefordert wird, gibt
substr() seit PHP 8.0.0 einen leeren String zurück;
vorher wurde stattdessen false
zurückgegeben.
<?php
var_dump(substr('a', 2));
?>
Das oben gezeigte Beispiel erzeugt mit PHP 8 folgende Ausgabe:
string(0) ""
Das oben gezeigte Beispiel erzeugt mit PHP 7 folgende Ausgabe:
bool(false)