Bitte warten...

PHP: Arbeiten mit Zeichenketten

Zeichenketten lassen sich mit PHP auf vielfältige Weise auslesen und manipulieren. Eine Auswahl der möglichen Funktionen wird im folgenden Skript exemplarisch vorgestellt:

Code kopieren
<?php
  $beispiel = "Eine beliebige";
  $beispiel .= " Zeichenkette.";  // Zeichenketten verbinden
  echo $beispiel."<br>";
  echo strlen($beispiel)."<br>";  // gibt die Länge der Zeichenkette aus
  echo str_word_count($beispiel)."<br>";  // zählt die Worte eines Strings
  echo substr_count($beispiel, "e")."<br>";  // gibt die Häufigkeit eines Teilstrings aus (case-sensitive)
  
  echo strpos($beispiel, "e")."<br>";  // gibt das erste Auftreten eines Teilstrings aus (case-sensitive)
  echo strrpos($beispiel, "e")."<br>";  // gibt das letzte Auftreten eines Teilstrings aus (case-sensitive)
  echo stripos($beispiel, "ei")."<br>";  // gibt das erste Auftreten eines Teilstrings aus (case-insensitive)
  echo strripos($beispiel, "ei")."<br><br>";  // gibt das letzte Auftreten eines Teilstrings aus (case-insensitive)

  echo $beispiel[15]."<br><br>";  // gibt das Zeichen an einer bestimmten Position aus (erste Position ist 0)
  echo substr($beispiel, 15)."<br>";  // gibt einen Teilstring ab einer bestimmten Position bis zum Ende der Zeichenkette aus
  echo substr($beispiel, 15, 7)."<br>";  // gibt einen Teilstring ab einer bestimmten Position bis zum Ende der Zeichenkette aus (mit bestimmter Länge)
  echo substr($beispiel, -6)."<br>";  // gibt einen Teilstring ab einer bestimmten Position vom Ende der Zeichenkette gezählt bis zum Ende der Zeichenkette aus
  echo substr($beispiel, -6, 5)."<br><br>";  // gibt einen Teilstring ab einer bestimmten Position vom Ende der Zeichenkette gezählt aus (mit bestimmter Länge)
  
  echo strstr($beispiel, "ei")."<br>";  // gibt den restlichen Teilstring ab einschließlich dem ersten Vorkommen eines Teilstrings aus (case-sensitive)
  echo stristr($beispiel, "ei")."<br>";  // gibt den restlichen Teilstring ab einschließlich dem ersten Vorkommen eines Teilstrings aus (case-insensitive)
  echo strrchr($beispiel, "ich")."<br>";  // gibt den restlichen Teilstring ab einschließlich dem letzten Vorkommen eines Teilstrings aus (case-sensitive)
  echo strpbrk($beispiel, "gktb")."<br><br>";  // gibt den restlichen Teilstring ab einschließlich dem ersten Vorkommen eines Zeichens aus der Zeichenliste aus (case-sensitive)
  
  echo "x".trim(" Beispiel ")."x<br>";  // löscht Leerzeichen am Anfang und Ende eines Strings
  echo "x".ltrim(" Beispiel ")."x<br>";  // löscht Leerzeichen am Anfang eines Strings
  echo "x".rtrim(" Beispiel ")."x<br><br>";  // löscht Leerzeichen am Ende eines Strings
  
  echo str_pad($beispiel, 35, "x")."<br>";  // ergänzt einen String rechts bis zur angegebenen Länge mit Zeichen
  echo str_pad($beispiel, 35, "x", STR_PAD_LEFT)."<br>";  // ergänzt einen String links bis zur angegebenen Länge mit Zeichen
  echo str_pad($beispiel, 35, "x", STR_PAD_BOTH)."<br><br>";  // ergänzt einen String beidseitig bis zur angegebenen Länge mit Zeichen
  
  echo strtolower($beispiel)."<br>";  // alle Zeichen in Kleinbuchstaben
  echo strtoupper($beispiel)."<br>";  // alle Zeichen in Großbuchstaben
  echo ucfirst("eine beliebige zeichenkette")."<br>";  // erstes Zeichen des Strings als Großbuchstaben
  echo ucwords("eine beliebige zeichenkette")."<br><br>";  // erstes Zeichen aller Wörter als Großbuchstaben
  
  echo str_replace("e", "o", $beispiel)."<br>";  // ersetzt Zeichen (case-sensitive)
  echo str_ireplace("e", "o", $beispiel)."<br>";  // ersetzt Zeichen (case-insensitive)
  echo strtr($beispiel, "bgkti", "pkgdy")."<br>";  // ersetzt eine Reihe von Zeichen (case-sensitive)
  echo substr_replace($beispiel, "folge.", 22)."<br>";  // ersetzt eine Teilzeichenkette ab einer bestimmten Position bis zum Ende des Strings
  echo substr_replace($beispiel, "andere", 5, 9)."<br><br>";  // ersetzt eine Teilzeichenkette ab einer bestimmten Position mit einer bestimmten Länge
  
  echo strrev($beispiel)."<br>";  // kehrt einen String um
  echo str_shuffle($beispiel)."<br><br>";  // mischt einen String zufällig
  
  echo str_repeat("*+", 10)."<br><br>";  // erzeugt einen String mit einer bestimmten Anzahl des angegebenen Strings
  
  echo chr(36)."<br>";  // erzeugt ein ASCII-Zeichen
  echo ord("$")."<br><br>";  // gibt den ASCII-Wert eines Zeichens aus
  
  $string1 = crypt("Hallo");  // verschlüsselt einen String
  $string2 = "Hallo";
  echo $string1."<br>";
  if (crypt($string2, $string1) == $string1) echo "korrekt<br><br>";
  
  /* weitere String-Funktionen
  
  Strings vergleichen:
  
  strcmp()
  strcasecmp()
  strncmp()
  strncasecmp()
  strnatcmp()
  strnatcasecmp()
  strspn()
  strcspn()
  strcoll()
  substr_compare()
  similar_text()
  
  Strings an HTML-Ausgabe anpassen (u.ä.):
  
  html_entity_decode()
  htmlentities()
  htmlspecialchars_decode()
  htmlspecialchars()
  get_html_translation_table()
  nl2br()
  strip_tags()
  addslashes()
  stripslashes()
  wordwrap()
  chunk_split()
  
  Strings mit Variablen verknüpfen:
  
  implode()
  explode()
  str_split()
  parse_str()
  count_chars()
  str_getcsv()
  strtok()
  
  Formatierte Strings bilden:
  
  fprintf()
  printf()
  sprintf()
  sscanf()
  vfprintf()
  vprintf()
  vsprintf()
  
  Prüfsummen bilden:
  
  sha1_file()
  sha1()
  md5_file()
  md5()
  
  */
  
?>

Zeichenkette extrahieren

Hier ein Beispiel, wie man eine Teilzeichenkette extrahieren kann, wenn lediglich die umgebenden Zeichen bekannt sind. Die benutzerdefinierten Funktionen suchen nach dem ersten Auftreten des Suchumfeldes, das durch $before und $after begrenzt ist.

Code kopieren
<?php
  // Zeichenkette einschließlich Suchumfeld extrahieren
  function extract_inclusive($string, $before, $after) {
    $part = substr($string, strpos($string, $before));
    return substr($part, 0, strpos($part, $after)+strlen($after));
  }

  // Zeichenkette ohne Suchumfeld extrahieren
  function extract_exclusive($string, $before, $after) {
    $part = substr($string, strpos($string, $before)+strlen($before));
    return substr($part, 0, strpos($part, $after));
  }

  $str = "<div style='text-align:center;'><span class='info'>Hallo!</span></div>";

  echo htmlentities(extract_inclusive($str, "<span", "</span>"))."<br>";
  echo extract_exclusive($str, "class='", "'")."<br>";
?>

Steuerzeichen

In PHP existieren bestimmte Zeichen, die durch Voranstellen des Backslash \escapet‹ werden. Mehr dazu bei Wikipedia.

\n - erzeugt einen Zeilenumbruch (kein HTML-Zeilenumbruch)
\r - wie \n (Windows-kompatibel)
\t - Tabulatorschritt

Code kopieren
<?php
  $a = "Hallo Welt!\n";
  $a = "Hallo Welt!\r\n";
  $b = "Hallo Welt!\tHallo Leute!";
?>

Bestimmte Zeichen mit semantischer Funktion müssen escapet werden, um ihre semantische Funktion zu verlieren und ›wie sie sind‹ dargestellt werden zu können:

\" - doppeltes Anführungszeichen
\' - einfaches Anführungszeichen
\\ - der Backslash selbst
\$ - das Dollarzeichen

Solche Escapezeichen können bei Bedarf mit der Funktion stripslashes() entfernt werden.

Die Länger escapter Zeichen beträgt trotz des Backslash nur 1 (s. Zeile 3 im folgenden Beispiel).

Code kopieren
<?php
  $c = "\"Hallo Welt\"";
  echo strlen($c);
  $d = '\'Hallo Welt\'';  // Nur notwendig, wenn der String selbst in einfachen Anführungszeichen steht.
  $e = "Backslash: \\";
  $f = "\$x = 123";
?>