Stringverarbeitung in PHP: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 54: | Zeile 54: | ||
// $count kann weggelassen werden: dann wird der Rest genommen: | // $count kann weggelassen werden: dann wird der Rest genommen: | ||
echo 'substr($a, 3, 2): ', substr($a, 5), "\n"; | echo 'substr($a, 3, 2): ', substr($a, 5), "\n"; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version vom 29. Oktober 2023, 16:14 Uhr
Links
Zielsetzung
Strings sind Zeichenketten.
Ein ganz wesentlicher Teil von Programmierung ist das Arbeiten mit Strings:
- Strings umwandeln
- Suchen in Strings
- Eigenschaften von Strings ermitteln.
Stringkonstanten
In PHP gibt es drei Möglichkeiten, Stringkonstanten zu definieren:
<?php
$a = 'Hello';
$b = "$a World\n";
$c = <<<EOS
<html>
<body>
<h1>$b</h1>
</body>
</html>
EOS;
$a = 'Hello';
: die Stringkonstante mit Ticks ' wird nicht interpoliert: Variablen werden nicht erkannt, Metazeichen wie '\n' werden nicht erkannt.$b = "$a World\n";
: die Stringkonstante mit doppeltem Appostroph wird interpoliert: Variablen werden durch ihren Wert ersetzt, Metazeichen wie '\n' werden ersetzt.$c = <<<EOS ... EOS;
: Diese Form wird "Here-Document" genannt:- Der String beginnt mit "<<<" und einem Namen wie EOS.
- Es folgen Zeilen, die zum String gehören.
- Am Ende steht der obige Name (z.B. "EOS") und ein ';'
- Diese Form wird eingesetzt, wenn viele Zeilen in einem String vorkommen.
- Dieser String wird interpoliert: Variablen werden durch ihren Wert ersetzt, Metazeichen wie '\n' werden ersetzt.
Wichtige Funktionen mit String
Stringlänge ermitteln und Teilstrings bilden: strlen() und substr()
<?php
$a = "Hello world!";
// function strlen(string $string): int zählt die Anzahl der Zeichen in $string
echo 'Länge von $a": ', strlen($a), "\n";
// function substr(string $string, int $offset, ?int $length = null): string schneidet $length Zeichen ab $offset aus $string:
echo 'substr($a, 3, 2): ', substr($a, 3, 2), "\n";
// $count kann weggelassen werden: dann wird der Rest genommen:
echo 'substr($a, 3, 2): ', substr($a, 5), "\n";
Aufgaben
- Schreibe eine Funktion maxString(string $string, int $maxLength), die $string zurückgibt, wenn der String kürzer als $maxLength ist, sonst nur die ersten $maxLength Zeichen.
- Schreibe eine Funktion lastChar(string $string), die das letzte Zeichen zurückgibt oder "", wenn $string leer ist.
Suche mit strpos() und strrpos()
<?php
$a = "Hello world!";
// function strpos(string $haystack, string $needle, int $offset=0) liefert den Index des ersten Treffers nach dem Offset $offset
echo "strpos('$a', 'l', 4): ", strpos($a, "l", 4), "\n";
// $offset kann weggelassen werden: dann ist $offset 0:
echo "strpos('$a', 'l', 4): ", strpos($a, "l"), "\n";
// function strrpos(string $haystack, string $needle, int $offset=0) liefert den letzten Treffer v
echo "strrpos('$a', 'l'): ", strrpos($a, "l"), "\n";
if (strpos($a, 'world') !== false){
echo "'$a' enthält 'world'\n";
} else {
echo "'$a' enthält NICHT 'world'\n";
}
echo "Varianten, die die Groß/Kleinschreibung ignorieren:\n";
// function stripos(string $haystack, string $needle, int $offset=0) liefert den Index des ersten Treffers nach dem Offset $offset
echo "stripos('$a', 'World', 4): ", stripos($a, 'World', 4), "\n";
// strripos(string $haystack, string $needle, int $offset = 0): int|false
echo "strripos('<HTML><BODY>Hi World</BODY></HTML>', 'body'): ", strripos('<HTML><BODY>Hi World</BODY></HTML>', 'body'), "\n";
Aufgaben
- Definiere eine Funktion, die aus einem HTML-Text den Titel herausfindet und zurückgibt.
- Definiere eine Funktion, die wesentliche Fehler in einer EMail-Adresse vermeidet.
Umwandeln in oder aus Array: explode() und implode()
<?php
$a = "Dies ist ein Satz mit mehreren Wörtern";
// function explode(string $separator, string $string, int $limit = PHP_INT_MAX): array Zerlegt einen String in ein Array.
$words = explode(' ', $a);
foreach ($words as $w){
echo $w, "\n";
}
echo 'Das erste und das letzte Wort: ', words[0], ' / ', words[count(words) - 1], "\n";
// function implode(string $separator, array $array): string: Setzt einen String aus einem Array zusammen:
echo implode('-'', $words), "\n";