studyklar
IProg · Skript 4 · Abschnitt 3

Strings in PHP: einfache und doppelte Anführungszeichen

Text heißt in PHP String. Ob man ihn in einfache oder doppelte Anführungszeichen setzt, ändert, was ausgegeben wird. Hier stehen die Regeln mit den Beispielen der Folien. Rechts laufen die Beispiele. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 04, Folien 15, 16 und 30: Strings, String-Literale, Verkettung.

Die Frage: Was gibt echo '$s1 $s2'; aus, und was echo "$s1 $s2";, wenn $s1 = 'Hallo' und $s2 = "Welt" gesetzt sind?

So gehen wir vor:

  1. Wie lang ein String sein darf und was strlen zählt.
  2. Einfache und doppelte Anführungszeichen im Vergleich.
  3. Strings mit dem Punkt aneinanderhängen.
  4. Text über mehrere Zeilen mit einem Here-Doc.
  5. Eine kurze Frage im Stil der Klausur.
Merke: Ein String ist eine Folge von Zeichen, also ein Text. Ein Literal ist ein Wert, der wörtlich im Code steht, etwa 'Hallo'.

strlen zählt Bytes, nicht Zeichen

Skript · Strings (Folie 15)
  • Keine Längenbeschränkung.
  • Bis PHP 7: 1 Character = 1 Byte; ab PHP 7 auch Unicode-Zeichen.
  • Achtung: strlen() liefert die Anzahl von Bytes, nicht die Anzahl Zeichen!

strlen($s) liefert die Länge eines Strings. Ein String in PHP darf beliebig lang sein.

Ein PHP-String ist eine Folge von Bytes. Ein Byte ist die kleinste Speichereinheit, sie fasst 256 verschiedene Werte. strlen zählt diese Bytes, nicht die sichtbaren Zeichen.

Die Folie sagt, ab PHP 7 gingen Unicode-Zeichen, also Zeichen aller Schriften. Sie lassen sich speichern, aber als mehrere Bytes. In der üblichen Kodierung UTF-8 brauchen Umlaute und ß zwei Bytes.

Hallo hat 5 Zeichen und 5 Bytes. Größe hat 5 Zeichen, aber ö und ß zählen doppelt: 3 + 2 · 2 = 7 Bytes.

Nur für Interessierte: mb_strlen("Größe") zählt Zeichen und liefert 5.

Zwei Arten von Anführungszeichen

Skript · String Literale (Folie 16)

Unterschiede ergeben sich erst bei der Verwendung von Ausdrücken im String: Bei doppelten Anführungszeichen werden diese ausgewertet.

Ein String-Literal steht entweder in einfachen '…' oder in doppelten "…" Anführungszeichen. Für reinen Text wie Hallo ist das gleich: $s1 und $s2 sind beide Strings.

Einen Unterschied gibt es erst, wenn im String ein Ausdruck steht, etwa der Name einer Variablen.

Noch 10 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

echo strlen("Hallo"), "\n";echo strlen("Größe"), "\n";
LegendeZwei Strings, deren Länge strlen misst.