Stringverarbeitung in PHP: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
Zeile 98: Zeile 98:
echo implode('-', $words), "\n";
echo implode('-', $words), "\n";
</syntaxhighlight>
</syntaxhighlight>
=== Aufgaben ===
* Formuliere eine Funktion, die aus einer Pfadangabe, beispielsweise "/etc/nginx/sites-available/wiki.hamatoma.de",  den Dateinamen, hier "wiki.hamatoma.de" ermittelt.
** Teste mit /home/ck
** Teste mit: /etc/nginx/sites-available/wiki.hamatoma.de
** Teste mit /home
* Formuliere eine Funktion, die aus einer Pfadangabe, beispielsweise "/etc/nginx/sites-available/wiki.hamatoma.de",  den Verzeichnispfad, hier "/etc/nginx/sites-available", ermittelt.
* Formuliere eine Funktion, die die Anzahl der Wörter eines Strings ermittelt: Wörter werden durch ' ' getrennt.
** Teste mit "Ich kann endlich Wörter in einem Satz zählen!".

Version vom 29. Oktober 2023, 16:23 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";

Aufgaben

  • Formuliere eine Funktion, die aus einer Pfadangabe, beispielsweise "/etc/nginx/sites-available/wiki.hamatoma.de", den Dateinamen, hier "wiki.hamatoma.de" ermittelt.
    • Teste mit /home/ck
    • Teste mit: /etc/nginx/sites-available/wiki.hamatoma.de
    • Teste mit /home
  • Formuliere eine Funktion, die aus einer Pfadangabe, beispielsweise "/etc/nginx/sites-available/wiki.hamatoma.de", den Verzeichnispfad, hier "/etc/nginx/sites-available", ermittelt.
  • Formuliere eine Funktion, die die Anzahl der Wörter eines Strings ermittelt: Wörter werden durch ' ' getrennt.
    • Teste mit "Ich kann endlich Wörter in einem Satz zählen!".