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:
<?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.
<?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
<?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).
<?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";
?>