String aus String extrahieren (Thema: PHP Beispiele)

Wie ein Teilstring aus einem anderen String ausgelesen bzw. extrahiert werden kann

1. Einzelne Zeichen auslesen

Um einzelne Zeichen aus einem String auszulesen kann man die Zeichenkette wie ein Array behandeln. Es wird dann per $str[index] auf das Zeichen zugegriffen. Auch gültig, aber veraltet, ist die Schreibweise $str{index}.

PHP-Code
<?php
	$str = 'Das ist ein Beispielstring.';

	var_dump($str[2]);
	var_dump($str{2});
	var_dump($str[100]); // erzeugt (string)"" und eine Warnung, da der String weniger als 100 Zeichen umfasst
?>

HTML-Code: Ausgabe
string(1) "s"
string(1) "s"
<br />
<b>Notice</b>:  Uninitialized string offset: 100 in <b>...\test.php</b> on line <b>6</b><br />
string(0) ""


2. Längere Zeichenketten auslesen

Sofern der String nur aus ASCII-Zeichen besteht kann über substr($str, $startIndex, $laenge) ein Teilabschnitt aus diesem ausgelesen werden. Der Abschnitt beginnt bei $startIndex und umfasst $laenge Zeichen. Das erste Zeichen im String hat den Index 0. Die Rückgabe der Funktion ist ein neuer String.

PHP-Code
<?php
	$str = 'Das ist ein Beispielstring.';

	var_dump(substr($str, 4, 3)); // erzeugt (string) "ist"
	
	// Ist die Laenge zu lang, dann gibt substr so viel zurueck wie moeglich ist:
	var_dump(substr($str, 0, 10000)); // erzeugt (string) "Das ist ein Beispielstring."
	
	// Liegt $startIndex ausserhalb des definierten Bereichs, dann gibt substr (bool)false zurueck:
	var_dump(substr($str, 10000, 1)); // erzeugt (bool) false

	// Es koennen auch negative Werte uebergeben werden:
	var_dump(substr($str, -3, 3)); // erzeugt die letzten drei Zeichen: (string) "ng."
?>

HTML-Code: Ausgabe
string(3) "ist"
string(27) "Das ist ein Beispielstring."
bool(false)
string(3) "ng."


3. Längere Zeichenketten auslesen (UTF-8)

Falls auch nicht ASCII-Zeichen verwendet werden sollen, muss mb_substr() statt substr() verwendet werden. mb_substr() kann auch auf ASCII-Strings angewendet werden, ist allerdings geringfügig langsamer als substr().

PHP-Code
<?php
	$str = 'αβγδ';
	var_dump(substr($str, 0, 2)); // fuer substr besteht alpha aus zwei Zeichen
	var_dump(mb_substr($str, 0, 2, 'UTF-8'));

	// Achtung: mb_substr() gibt bei zu hohem Startwert einen leeren String zurueck
	// statt (bool)false wie es substr() macht
	$str = 'abc';
	var_dump(substr($str, 100, 1)); // erzeugt: (bool) false
	var_dump(mb_substr($str, 100, 1)); // erzeugt: string(0) ""
?>

HTML-Code: Ausgabe
string(2) "α"
string(4) "αβ"
bool(false)
string(0) ""


4. Zeichenkette auslesen und ersetzen

Soll die Zeichenkette nicht nur ausgelesen, sondern auch im ursprünglichen String ersetzt werden, so ist eine Kombination aus substr() und substr_replace() zu verwenden. substr_replace() wird genauso wie substr() aufgerufen, hat aber noch an zweiter Stelle den zusätzlichen Parameter $replacement. Dieser bestimmt, was als Ersatz für die Zeichenkette von $startIndex bis $startIndex+$laenge eingesetzt werden soll. Da es im nachfolgenden Beispiel Ziel ist, diese Zeichenkette zu entfernen, wird für $replacement ein leerer String gewählt.

PHP-Code
<?php
	$str = 'Das ist ein Beispielstring.';
	$part = substr($str, 4, 3);
	$str = substr_replace($str, '', 4, 3);
	var_dump($part, $str);
?>

HTML-Code: Ausgabe
string(3) "ist"
string(24) "Das  ein Beispielstring."


Kommentare (0)

Von neu nach alt