PHP String
Strings in PHP erstellen, einfache vs. doppelte Anführungszeichen, Heredoc/Nowdoc, Escape-Sequenzen, Verkettung und die wichtigsten String-Funktionen mit Beispielen.
Ein String in PHP ist eine Folge von Zeichen – Text wie ein Name, ein Satz oder ein ganzes HTML-Dokument. Strings gehören zu den am häufigsten verwendeten Datentypen in PHP, und die Sprache verfügt über eine umfangreiche Bibliothek an Funktionen zum Suchen, Ersetzen, Formatieren und Transformieren von Strings.
Diese Seite erklärt, wie man Strings erstellt, den Unterschied zwischen einfachen und doppelten Anführungszeichen, Escape-Sequenzen, das Zusammenfügen von Strings und die String-Funktionen, die man am häufigsten benötigt.
Einen String erstellen
Ein String-Literal lässt sich mit einfachen Anführungszeichen (') oder doppelten Anführungszeichen (") schreiben:
<?php
$greeting = 'Hello';
$name = "World";
echo $greeting; // Hello
?>Für längere oder komplexere Texte bietet PHP außerdem die Heredoc- und Nowdoc-Syntax, die weiter unten beschrieben wird.
Einfache vs. doppelte Anführungszeichen
Dies ist der wichtigste Unterschied, den man frühzeitig lernen sollte. Strings in doppelten Anführungszeichen parsen Variablen und Escape-Sequenzen; Strings in einfachen Anführungszeichen tun dies nicht.
<?php
$name = "Alice";
echo "Hello, $name\n"; // Hello, Alice (then a newline)
echo 'Hello, $name\n'; // Hello, $name\n (printed literally)
?>In der Version mit doppelten Anführungszeichen wird $name durch seinen Wert ersetzt und \n wird zu einem echten Zeilenumbruch. In der Version mit einfachen Anführungszeichen wird beides genau so ausgegeben, wie es getippt wurde.
Einfache Anführungszeichen sind etwas schneller und sicherer, wenn man keine Interpolation möchte. Verwende sie daher für einfache Literale und wechsle nur dann zu doppelten Anführungszeichen, wenn eine Variable oder eine Escape-Sequenz im String benötigt wird.
Interpolation mit geschweiften Klammern
Wenn eine Variable von Zeichen gefolgt wird, die Teil ihres Namens sein könnten, wird sie in {} eingeschlossen, damit PHP weiß, wo der Name endet:
<?php
$fruit = "apple";
echo "I ate two {$fruit}s\n"; // I ate two apples
?>Escape-Sequenzen
Escape-Sequenzen haben nur innerhalb von doppelt angeführten Strings (und Heredoc) eine Bedeutung:
| Sequenz | Bedeutung |
|---|---|
\n | Zeilenumbruch |
\t | Tabulator |
\\ | Backslash |
\" | Doppeltes Anführungszeichen |
\$ | Dollarzeichen (verhindert Interpolation) |
<?php
echo "Line one\nLine two\n";
echo "Price: \$10\n"; // Price: $10
?>Heredoc und Nowdoc
Für mehrzeiligen Text verhält sich Heredoc wie ein String in doppelten Anführungszeichen (Variablen werden geparst) und Nowdoc wie ein String in einfachen Anführungszeichen (nichts wird geparst).
<?php
$name = "Sam";
// Heredoc - interpolates $name
echo <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo "\n---\n";
// Nowdoc - prints $name literally
echo <<<'EOT'
Dear $name,
This is shown verbatim.
EOT;
?>Der schließende Bezeichner (EOT hier) muss am Anfang einer Zeile stehen.
Verkettung
Strings werden mit dem Punkt-Operator (.) verbunden. Der Operator .= hängt an einen bestehenden String an:
<?php
$first = "John";
$last = "Doe";
$full = $first . " " . $last;
echo $full . "\n"; // John Doe
$message = "Hello";
$message .= ", world!";
echo $message . "\n"; // Hello, world!
?>Unter PHP Operators findest du die vollständige Liste der String- und Rechenoperatoren.
Häufig verwendete String-Funktionen
Die PHP-Standardbibliothek enthält Dutzende von String-Funktionen. Die folgenden werden am häufigsten benötigt:
<?php
$text = "Hello, World";
echo strlen($text) . "\n"; // 12 - length in bytes
echo strtoupper($text) . "\n"; // HELLO, WORLD
echo strtolower($text) . "\n"; // hello, world
echo str_replace("World", "PHP", $text) . "\n"; // Hello, PHP
echo strpos($text, "World") . "\n"; // 7 - index of first match
echo substr($text, 0, 5) . "\n"; // Hello
echo trim(" padded ") . "|\n"; // padded|
?>| Funktion | Beschreibung |
|---|---|
strlen() | Gibt die Länge des Strings zurück |
strtoupper() / strtolower() | Ändert die Groß-/Kleinschreibung |
str_replace() | Ersetzt alle Vorkommen eines Teilstrings |
strpos() | Findet die Position eines Teilstrings (gibt false zurück, wenn nicht vorhanden) |
substr() | Extrahiert einen Teil eines Strings |
trim() | Entfernt Leerzeichen an beiden Enden |
explode() | Teilt einen String in ein array auf |
implode() | Verbindet ein array zu einem String |
Formatierung mit sprintf()
Wenn eine genaue Kontrolle darüber benötigt wird, wie Werte in einem String platziert werden – Auffüllen, Zahlenformatierung, Ausrichtung – wird sprintf() verwendet. Es gibt einen formatierten String zurück (und printf() gibt ihn direkt aus):
<?php
$name = "Alice";
$score = 92.5;
$line = sprintf("%s scored %.1f%%", $name, $score);
echo $line . "\n"; // Alice scored 92.5%
?>Der Platzhalter %s fügt einen String ein, %d eine Ganzzahl und %.1f eine Fließkommazahl gerundet auf eine Dezimalstelle.
Auf einzelne Zeichen zugreifen
Ein String kann wie ein array indiziert werden, beginnend bei 0:
<?php
$word = "PHP";
echo $word[0] . "\n"; // P
echo $word[2] . "\n"; // P
?>Weiterführende Themen
- PHP Strings – ein ausführliches Tutorial zur Arbeit mit Text in PHP.
- PHP Data Types – wie Strings neben Ganzzahlen, Fließkommazahlen, Arrays und mehr einzuordnen sind.
- PHP Functions – eigene wiederverwendbare Funktionen schreiben.