(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)