PHP Strings: Ein ausführlicher Leitfaden
Tauchen Sie tief in die Welt der PHP-Strings ein und entdecken Sie alle Funktionen. PHP-Strings sind ein grundlegender Bestandteil der PHP-Programmierung.
Ein String ist eine Zeichenfolge, die zum Speichern und Verarbeiten von Text verwendet wird — Namen, Nachrichten, HTML, JSON, Dateiinhalte und vieles mehr. Strings sind einer der grundlegenden Datentypen in PHP, und fast jedes PHP-Programm arbeitet mit ihnen. Dieser Leitfaden erklärt, wie man Strings erstellt, den entscheidenden Unterschied zwischen einfachen und doppelten Anführungszeichen, Verkettung, den Zugriff auf einzelne Zeichen, die nützlichsten eingebauten Funktionen, Escape-Sequenzen sowie die mehrzeiligen Heredoc- und Nowdoc-Syntaxen — mit ausführbaren Beispielen.
Was ist ein PHP-String?
Ein String ist Text in Anführungszeichen, der in einer Variablen gespeichert wird. PHP bietet vier Möglichkeiten, einen String zu schreiben: einfache Anführungszeichen, doppelte Anführungszeichen, Heredoc und Nowdoc. Die beiden Anführungszeichenstile sind die am häufigsten verwendeten:
<?php
$single = 'Hello World';
$double = "Hello World";
echo $single; // Hello World
echo "\n";
echo $double; // Hello WorldStrings haben keine feste Längenbeschränkung außer dem verfügbaren Arbeitsspeicher, sodass ein String ein einzelnes Zeichen oder ein ganzes Dokument enthalten kann.
Einfache vs. doppelte Anführungszeichen
Dies ist der wichtigste Unterschied, den man frühzeitig lernen sollte, da die Wahl des falschen Anführungszeichenstils eine häufige Fehlerquelle ist. Doppelte Anführungszeichen verarbeiten Escape-Sequenzen und interpolieren Variablen; einfache Anführungszeichen behandeln fast alles wörtlich.
<?php
$name = 'Alice';
echo "Hello $name\n"; // Hello Alice (variable + newline parsed)
echo 'Hello $name\n'; // Hello $name\n (printed literally)Wenn die Variable direkt an andere Zeichen angrenzt, umschließen Sie sie mit geschweiften Klammern, damit PHP weiß, wo der Name endet:
<?php
$item = 'book';
echo "I bought 3 {$item}s\n"; // I bought 3 booksEinfache Anführungszeichen sind geringfügig schneller und sicherer, wenn keine Interpolation benötigt wird — bevorzugen Sie sie für festen Text. Verwenden Sie doppelte Anführungszeichen (oder Heredoc), wenn Sie Variablen oder Escape-Sequenzen einbetten möchten.
String-Verkettung
Das Zusammenfügen von Strings zu einem einzigen wird als Verkettung bezeichnet. PHP verwendet den Punkt (.) als Operator, und .= fügt an einen bestehenden String an:
<?php
$first = 'Hello';
$last = 'World';
$greeting = $first . ' ' . $last;
echo $greeting; // Hello World
$greeting .= '!';
echo "\n" . $greeting; // Hello World!Beachten Sie, dass PHP . für die Verkettung verwendet, nicht + — die Verwendung von + bei zwei Strings versucht eine numerische Addition und ist fast nie das, was man möchte.
Zugriff auf Zeichen
Ein String verhält sich wie ein Array von Zeichen. Sie können jedes Zeichen über seinen nullbasierten Index mit eckigen Klammern lesen:
<?php
$word = 'PHP';
echo $word[0]; // P
echo $word[2]; // P
echo $word[-1]; // P (negative index counts from the end)Um die Länge des Strings zu ermitteln, verwenden Sie strlen:
<?php
echo strlen('Hello World'); // 11 (the space counts)Häufig verwendete String-Funktionen
PHP verfügt über eine umfangreiche Bibliothek von String-Funktionen. Hier sind die am häufigsten verwendeten, jeweils mit einem Link zu einem eigenen Kapitel:
| Funktion | Zweck |
|---|---|
strlen | Länge eines Strings (in Bytes) |
strpos | Position des ersten Vorkommens eines Teilstrings |
str_replace | Alle Vorkommen eines Teilstrings ersetzen |
strtoupper / strtolower | Groß-/Kleinschreibung ändern |
substr | Teil eines Strings extrahieren |
trim | Leerzeichen von beiden Enden entfernen |
explode / implode | Zwischen Strings und arrays konvertieren |
sprintf | Einen String aus einer Vorlage formatieren |
Ein kurzer Überblick:
<?php
$text = ' The quick brown fox ';
echo strlen($text); // 23
echo "\n";
echo strpos($text, 'quick'); // 6
echo "\n";
echo str_replace('quick', 'slow', trim($text)); // The slow brown fox
echo "\n";
echo strtoupper(trim($text)); // THE QUICK BROWN FOX
echo "\n";
echo substr(trim($text), 0, 3); // Thesprintf erstellt einen String aus einer Vorlage, was für Zahlen und Auffüllung praktisch ist:
<?php
$price = 9.5;
echo sprintf('Total: $%.2f', $price); // Total: $9.50Arbeiten mit Unicode
Standardfunktionen wie strlen und strpos zählen Bytes, keine Zeichen. Für Text mit Akzentbuchstaben, Emoji oder nicht-lateinischen Schriften verwenden Sie die Mehrbyte-Äquivalente mb_* aus der mbstring-Erweiterung, damit Mehrbyte-Zeichen korrekt gezählt werden:
<?php
$word = 'café';
echo strlen($word); // 5 (é is 2 bytes in UTF-8)
echo "\n";
echo mb_strlen($word); // 4 (correct character count)Escape-Sequenzen
In doppelt angeführten Strings leitet ein Backslash eine Escape-Sequenz ein — eine Möglichkeit, Zeichen zu schreiben, die schwer einzugeben sind oder die andernfalls geparst würden. Die gebräuchlichsten:
| Sequenz | Bedeutung |
|---|---|
\n | Zeilenumbruch |
\t | Tabulator |
\" | Wörtliches doppeltes Anführungszeichen |
\\ | Wörtlicher Backslash |
\$ | Wörtliches Dollarzeichen (Interpolation unterdrücken) |
<?php
echo "Line 1\nLine 2"; // prints on two lines
echo "\n";
echo "Price: \$5"; // Price: $5
echo "\n";
echo "She said \"hello\""; // She said "hello"Einfach angeführte Strings erkennen nur \' (ein wörtliches Anführungszeichen) und \\; alles andere, einschließlich \n, wird wörtlich ausgegeben.
Heredoc und Nowdoc
Wenn Sie einen langen, mehrzeiligen String benötigen, sind Heredoc und Nowdoc sauberer als das manuelle Escapen von Zeilenumbrüchen.
Heredoc verhält sich wie ein doppelt angeführter String: Variablen werden interpoliert und Escape-Sequenzen funktionieren. Öffnen Sie ihn mit <<< gefolgt von einem Bezeichner und schließen Sie ihn mit demselben Bezeichner in einer eigenen Zeile:
<?php
$name = 'Alice';
$message = <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear Alice,
// Welcome aboard!Nowdoc verhält sich wie ein einfach angeführter String — keine Interpolation, kein Escape-Parsing. Der einzige syntaktische Unterschied besteht darin, dass der öffnende Bezeichner in einfache Anführungszeichen eingeschlossen wird:
<?php
$name = 'Alice';
$message = <<<'EOT'
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear $name,
// Welcome aboard!Verwenden Sie Heredoc für vorlagenbasierte Ausgaben (E-Mails, HTML-Blöcke) und Nowdoc, wenn der Text exakt so bleiben soll, wie er geschrieben wurde.
Zusammenfassung
PHP-Strings sind das Grundgerüst für die Arbeit mit Text. Die wichtigsten Punkte:
- Verwenden Sie einfache Anführungszeichen für wörtlichen Text und doppelte Anführungszeichen (oder Heredoc), wenn Sie Variableninterpolation oder Escape-Sequenzen benötigen.
- Verketten Sie mit dem
.-Operator, nicht mit+. - Greifen Sie auf eingebaute Funktionen wie
strlen,substr,str_replaceundexplodezurück, anstatt sie neu zu erfinden. - Verwenden Sie die
mb_*-Funktionen, wenn Text möglicherweise Nicht-ASCII-Zeichen enthält.
Lernen Sie als nächstes, wie man Strings und andere Werte mit echo und print ausgibt, oder erkunden Sie PHP-Zahlen und -Arrays.