W3docs

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:

SequenzBedeutung
\nZeilenumbruch
\tTabulator
\\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|
?>
FunktionBeschreibung
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.

Übung

Übung
Welche der folgenden PHP-Funktionen kann verwendet werden, um einen formatierten String zurückzugeben?
Welche der folgenden PHP-Funktionen kann verwendet werden, um einen formatierten String zurückzugeben?
Was this page helpful?