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